changeset 132:7744db05aedc

Released VIFF 0.5rc1.
author Martin Geisler <mg@daimi.au.dk>
date Wed, 23 Apr 2008 08:52:52 +0200
parents 8d7ac214fb32
children eed23eeac5fa
files api/0.5rc1/api-objects.txt api/0.5rc1/class-tree.html api/0.5rc1/class_hierarchy_for_activerunt.gif api/0.5rc1/class_hierarchy_for_basicrunti.gif api/0.5rc1/class_hierarchy_for_comparison.gif api/0.5rc1/class_hierarchy_for_comparison_2.gif api/0.5rc1/class_hierarchy_for_fieldeleme.gif api/0.5rc1/class_hierarchy_for_fieldeleme_2.gif api/0.5rc1/class_hierarchy_for_gf256.gif api/0.5rc1/class_hierarchy_for_gfelement.gif api/0.5rc1/class_hierarchy_for_matrix.gif api/0.5rc1/class_hierarchy_for_prf.gif api/0.5rc1/class_hierarchy_for_runtime.gif api/0.5rc1/class_hierarchy_for_share.gif api/0.5rc1/class_hierarchy_for_shareexcha.gif api/0.5rc1/class_hierarchy_for_shareexcha_2.gif api/0.5rc1/class_hierarchy_for_sharelist.gif api/0.5rc1/class_hierarchy_for_toft05runt.gif api/0.5rc1/class_hierarchy_for_toft07runt.gif api/0.5rc1/crarr.png api/0.5rc1/epydoc-log.html api/0.5rc1/epydoc.css api/0.5rc1/epydoc.js api/0.5rc1/frames.html api/0.5rc1/help.html api/0.5rc1/identifier-index.html api/0.5rc1/index.html api/0.5rc1/module-tree.html api/0.5rc1/redirect.html api/0.5rc1/toc-everything.html api/0.5rc1/toc-viff-module.html api/0.5rc1/toc-viff.comparison-module.html api/0.5rc1/toc-viff.config-module.html api/0.5rc1/toc-viff.field-module.html api/0.5rc1/toc-viff.field2-module.html api/0.5rc1/toc-viff.matrix-module.html api/0.5rc1/toc-viff.prss-module.html api/0.5rc1/toc-viff.runtime-module.html api/0.5rc1/toc-viff.shamir-module.html api/0.5rc1/toc-viff.util-module.html api/0.5rc1/toc.html api/0.5rc1/viff-module.html api/0.5rc1/viff-pysrc.html api/0.5rc1/viff.comparison-module.html api/0.5rc1/viff.comparison-pysrc.html api/0.5rc1/viff.comparison.ComparisonToft05Mixin-class.html api/0.5rc1/viff.comparison.ComparisonToft07Mixin-class.html api/0.5rc1/viff.comparison.Toft05Runtime-class.html api/0.5rc1/viff.comparison.Toft07Runtime-class.html api/0.5rc1/viff.config-module.html api/0.5rc1/viff.config-pysrc.html api/0.5rc1/viff.config.Player-class.html api/0.5rc1/viff.field-module.html api/0.5rc1/viff.field-pysrc.html api/0.5rc1/viff.field.FieldElement-class.html api/0.5rc1/viff.field.GF256-class.html api/0.5rc1/viff.field2-module.html api/0.5rc1/viff.field2.FieldElement-class.html api/0.5rc1/viff.field2.GFElement-class.html api/0.5rc1/viff.matrix-module.html api/0.5rc1/viff.matrix-pysrc.html api/0.5rc1/viff.matrix.Matrix-class.html api/0.5rc1/viff.prss-module.html api/0.5rc1/viff.prss-pysrc.html api/0.5rc1/viff.prss.PRF-class.html api/0.5rc1/viff.runtime-module.html api/0.5rc1/viff.runtime-pysrc.html api/0.5rc1/viff.runtime.ActiveRuntime-class.html api/0.5rc1/viff.runtime.BasicRuntime-class.html api/0.5rc1/viff.runtime.Runtime-class.html api/0.5rc1/viff.runtime.Share-class.html api/0.5rc1/viff.runtime.ShareExchanger-class.html api/0.5rc1/viff.runtime.ShareExchangerFactory-class.html api/0.5rc1/viff.runtime.ShareList-class.html api/0.5rc1/viff.shamir-module.html api/0.5rc1/viff.shamir-pysrc.html api/0.5rc1/viff.util-module.html api/0.5rc1/viff.util-pysrc.html index.txt release/viff-0.5rc1.tar.bz2 release/viff-0.5rc1.tar.gz release/viff-0.5rc1.win32.exe release/viff-0.5rc1.zip
diffstat 83 files changed, 20152 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/api-objects.txt	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,327 @@
+viff	viff-module.html
+viff.comparison	viff.comparison-module.html
+viff.comparison.increment_pc	viff.runtime-module.html#increment_pc
+viff.comparison.gather_shares	viff.runtime-module.html#gather_shares
+viff.config	viff.config-module.html
+viff.config.generate_subsets	viff.prss-module.html#generate_subsets
+viff.config.generate_configs	viff.config-module.html#generate_configs
+viff.config.load_config	viff.config-module.html#load_config
+viff.field	viff.field-module.html
+viff.field._generate_tables	viff.field-module.html#_generate_tables
+viff.field._inv_table	viff.field-module.html#_inv_table
+viff.field.GF	viff.field-module.html#GF
+viff.field._field_cache	viff.field-module.html#_field_cache
+viff.field._exp_table	viff.field-module.html#_exp_table
+viff.field._log_table	viff.field-module.html#_log_table
+viff.field2	viff.field2-module.html
+viff.matrix	viff.matrix-module.html
+viff.matrix.hyper	viff.matrix-module.html#hyper
+viff.prss	viff.prss-module.html
+viff.prss.prss	viff.prss-module.html#prss
+viff.prss.generate_subsets	viff.prss-module.html#generate_subsets
+viff.runtime	viff.runtime-module.html
+viff.runtime.hyper	viff.matrix-module.html#hyper
+viff.runtime.prss	viff.prss-module.html#prss
+viff.runtime.preprocess	viff.runtime-module.html#preprocess
+viff.runtime.wrapper	viff.util-module.html#wrapper
+viff.runtime.increment_pc	viff.runtime-module.html#increment_pc
+viff.runtime.create_runtime	viff.runtime-module.html#create_runtime
+viff.runtime.gather_shares	viff.runtime-module.html#gather_shares
+viff.shamir	viff.shamir-module.html
+viff.shamir.share	viff.shamir-module.html#share
+viff.shamir._recombination_vectors	viff.shamir-module.html#_recombination_vectors
+viff.shamir.recombine	viff.shamir-module.html#recombine
+viff.shamir.verify_sharing	viff.shamir-module.html#verify_sharing
+viff.util	viff.util-module.html
+viff.util.deprecation	viff.util-module.html#deprecation
+viff.util.dlift	viff.util-module.html#dlift
+viff.util.rand	viff.util-module.html#rand
+viff.util.find_prime	viff.util-module.html#find_prime
+viff.util.wrapper	viff.util-module.html#wrapper
+viff.util.dprint	viff.util-module.html#dprint
+viff.util._seed	viff.util-module.html#_seed
+viff.util.clone_deferred	viff.util-module.html#clone_deferred
+viff.comparison.ComparisonToft05Mixin	viff.comparison.ComparisonToft05Mixin-class.html
+viff.comparison.ComparisonToft05Mixin._finish_greater_than_equal	viff.comparison.ComparisonToft05Mixin-class.html#_finish_greater_than_equal
+viff.comparison.ComparisonToft05Mixin.greater_than_equal	viff.comparison.ComparisonToft05Mixin-class.html#greater_than_equal
+viff.comparison.ComparisonToft05Mixin.convert_bit_share	viff.comparison.ComparisonToft05Mixin-class.html#convert_bit_share
+viff.comparison.ComparisonToft05Mixin._diamond	viff.comparison.ComparisonToft05Mixin-class.html#_diamond
+viff.comparison.ComparisonToft07Mixin	viff.comparison.ComparisonToft07Mixin-class.html
+viff.comparison.ComparisonToft07Mixin.convert_bit_share	viff.comparison.ComparisonToft07Mixin-class.html#convert_bit_share
+viff.comparison.ComparisonToft07Mixin._finish_greater_than_equal	viff.comparison.ComparisonToft07Mixin-class.html#_finish_greater_than_equal
+viff.comparison.ComparisonToft07Mixin.greater_than_equal	viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal
+viff.comparison.ComparisonToft07Mixin.greater_than_equal_online	viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_online
+viff.comparison.ComparisonToft07Mixin.greater_than_equal_preproc	viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_preproc
+viff.comparison.Toft05Runtime	viff.comparison.Toft05Runtime-class.html
+viff.runtime.BasicRuntime.num_players	viff.runtime.BasicRuntime-class.html#num_players
+viff.runtime.BasicRuntime._expect_data	viff.runtime.BasicRuntime-class.html#_expect_data
+viff.runtime.BasicRuntime.add_player	viff.runtime.BasicRuntime-class.html#add_player
+viff.comparison.ComparisonToft05Mixin._finish_greater_than_equal	viff.comparison.ComparisonToft05Mixin-class.html#_finish_greater_than_equal
+viff.runtime.BasicRuntime._exchange_shares	viff.runtime.BasicRuntime-class.html#_exchange_shares
+viff.runtime.BasicRuntime.shutdown	viff.runtime.BasicRuntime-class.html#shutdown
+viff.runtime.BasicRuntime.threshold	viff.runtime.BasicRuntime-class.html#threshold
+viff.runtime.BasicRuntime.wait_for	viff.runtime.BasicRuntime-class.html#wait_for
+viff.runtime.Runtime.open	viff.runtime.Runtime-class.html#open
+viff.runtime.BasicRuntime.id	viff.runtime.BasicRuntime-class.html#id
+viff.runtime.Runtime.__init__	viff.runtime.Runtime-class.html#__init__
+viff.comparison.ComparisonToft05Mixin.greater_than_equal	viff.comparison.ComparisonToft05Mixin-class.html#greater_than_equal
+viff.runtime.Runtime.xor	viff.runtime.Runtime-class.html#xor
+viff.runtime.Runtime.sub	viff.runtime.Runtime-class.html#sub
+viff.runtime.BasicRuntime.synchronize	viff.runtime.BasicRuntime-class.html#synchronize
+viff.runtime.Runtime.add	viff.runtime.Runtime-class.html#add
+viff.runtime.BasicRuntime.preprocess	viff.runtime.BasicRuntime-class.html#preprocess
+viff.runtime.Runtime.mul	viff.runtime.Runtime-class.html#mul
+viff.comparison.ComparisonToft05Mixin._diamond	viff.comparison.ComparisonToft05Mixin-class.html#_diamond
+viff.runtime.Runtime._recombine	viff.runtime.Runtime-class.html#_recombine
+viff.runtime.BasicRuntime.schedule_callback	viff.runtime.BasicRuntime-class.html#schedule_callback
+viff.runtime.BasicRuntime.add_options	viff.runtime.BasicRuntime-class.html#add_options
+viff.comparison.ComparisonToft05Mixin.convert_bit_share	viff.comparison.ComparisonToft05Mixin-class.html#convert_bit_share
+viff.runtime.BasicRuntime._expect_share	viff.runtime.BasicRuntime-class.html#_expect_share
+viff.runtime.BasicRuntime.program_counter	viff.runtime.BasicRuntime-class.html#program_counter
+viff.runtime.Runtime.prss_share_random	viff.runtime.Runtime-class.html#prss_share_random
+viff.runtime.BasicRuntime.protocols	viff.runtime.BasicRuntime-class.html#protocols
+viff.runtime.Runtime.shamir_share	viff.runtime.Runtime-class.html#shamir_share
+viff.runtime.Runtime._shamir_share	viff.runtime.Runtime-class.html#_shamir_share
+viff.runtime.BasicRuntime._pool	viff.runtime.BasicRuntime-class.html#_pool
+viff.runtime.BasicRuntime._needed_data	viff.runtime.BasicRuntime-class.html#_needed_data
+viff.runtime.BasicRuntime.players	viff.runtime.BasicRuntime-class.html#players
+viff.runtime.Runtime.prss_share	viff.runtime.Runtime-class.html#prss_share
+viff.comparison.Toft07Runtime	viff.comparison.Toft07Runtime-class.html
+viff.runtime.BasicRuntime.num_players	viff.runtime.BasicRuntime-class.html#num_players
+viff.runtime.BasicRuntime._expect_data	viff.runtime.BasicRuntime-class.html#_expect_data
+viff.runtime.BasicRuntime.add_player	viff.runtime.BasicRuntime-class.html#add_player
+viff.comparison.ComparisonToft07Mixin._finish_greater_than_equal	viff.comparison.ComparisonToft07Mixin-class.html#_finish_greater_than_equal
+viff.runtime.BasicRuntime._exchange_shares	viff.runtime.BasicRuntime-class.html#_exchange_shares
+viff.comparison.ComparisonToft07Mixin.greater_than_equal_online	viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_online
+viff.runtime.BasicRuntime.shutdown	viff.runtime.BasicRuntime-class.html#shutdown
+viff.runtime.BasicRuntime.threshold	viff.runtime.BasicRuntime-class.html#threshold
+viff.runtime.BasicRuntime.wait_for	viff.runtime.BasicRuntime-class.html#wait_for
+viff.runtime.Runtime.open	viff.runtime.Runtime-class.html#open
+viff.runtime.BasicRuntime.id	viff.runtime.BasicRuntime-class.html#id
+viff.runtime.Runtime.__init__	viff.runtime.Runtime-class.html#__init__
+viff.comparison.ComparisonToft07Mixin.greater_than_equal	viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal
+viff.runtime.Runtime.xor	viff.runtime.Runtime-class.html#xor
+viff.runtime.Runtime.sub	viff.runtime.Runtime-class.html#sub
+viff.runtime.BasicRuntime.synchronize	viff.runtime.BasicRuntime-class.html#synchronize
+viff.runtime.Runtime.add	viff.runtime.Runtime-class.html#add
+viff.runtime.BasicRuntime.preprocess	viff.runtime.BasicRuntime-class.html#preprocess
+viff.runtime.Runtime.mul	viff.runtime.Runtime-class.html#mul
+viff.runtime.Runtime._recombine	viff.runtime.Runtime-class.html#_recombine
+viff.runtime.BasicRuntime.schedule_callback	viff.runtime.BasicRuntime-class.html#schedule_callback
+viff.runtime.BasicRuntime.add_options	viff.runtime.BasicRuntime-class.html#add_options
+viff.comparison.ComparisonToft07Mixin.convert_bit_share	viff.comparison.ComparisonToft07Mixin-class.html#convert_bit_share
+viff.runtime.BasicRuntime._expect_share	viff.runtime.BasicRuntime-class.html#_expect_share
+viff.runtime.BasicRuntime.program_counter	viff.runtime.BasicRuntime-class.html#program_counter
+viff.comparison.ComparisonToft07Mixin.greater_than_equal_preproc	viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_preproc
+viff.runtime.Runtime.prss_share_random	viff.runtime.Runtime-class.html#prss_share_random
+viff.runtime.BasicRuntime.protocols	viff.runtime.BasicRuntime-class.html#protocols
+viff.runtime.Runtime.shamir_share	viff.runtime.Runtime-class.html#shamir_share
+viff.runtime.Runtime._shamir_share	viff.runtime.Runtime-class.html#_shamir_share
+viff.runtime.BasicRuntime._pool	viff.runtime.BasicRuntime-class.html#_pool
+viff.runtime.BasicRuntime._needed_data	viff.runtime.BasicRuntime-class.html#_needed_data
+viff.runtime.BasicRuntime.players	viff.runtime.BasicRuntime-class.html#players
+viff.runtime.Runtime.prss_share	viff.runtime.Runtime-class.html#prss_share
+viff.config.Player	viff.config.Player-class.html
+viff.config.Player.__init__	viff.config.Player-class.html#__init__
+viff.config.Player.__repr__	viff.config.Player-class.html#__repr__
+viff.config.Player.dealer_prfs	viff.config.Player-class.html#dealer_prfs
+viff.config.Player.prfs	viff.config.Player-class.html#prfs
+viff.field.FieldElement	viff.field.FieldElement-class.html
+viff.field.GF256	viff.field.GF256-class.html
+viff.field.GF256.__rtruediv__	viff.field.GF256-class.html#__rtruediv__
+viff.field.GF256.__str__	viff.field.GF256-class.html#__str__
+viff.field.GF256.__radd__	viff.field.GF256-class.html#__radd__
+viff.field.GF256.__truediv__	viff.field.GF256-class.html#__truediv__
+viff.field.GF256.__rsub__	viff.field.GF256-class.html#__rsub__
+viff.field.GF256.__rdiv__	viff.field.GF256-class.html#__rdiv__
+viff.field.GF256.__rmul__	viff.field.GF256-class.html#__rmul__
+viff.field.GF256.__init__	viff.field.GF256-class.html#__init__
+viff.field.GF256.field	viff.field.GF256-class.html
+viff.field.GF256.__rfloordiv__	viff.field.GF256-class.html#__rfloordiv__
+viff.field.GF256.modulus	viff.field.GF256-class.html#modulus
+viff.field.GF256.__neg__	viff.field.GF256-class.html#__neg__
+viff.field.GF256.__invert__	viff.field.GF256-class.html#__invert__
+viff.field.GF256.__pow__	viff.field.GF256-class.html#__pow__
+viff.field.GF256.__add__	viff.field.GF256-class.html#__add__
+viff.field.GF256.__eq__	viff.field.GF256-class.html#__eq__
+viff.field.GF256.__rxor__	viff.field.GF256-class.html#__rxor__
+viff.field.GF256.__nonzero__	viff.field.GF256-class.html#__nonzero__
+viff.field.GF256.__xor__	viff.field.GF256-class.html#__xor__
+viff.field.GF256.__div__	viff.field.GF256-class.html#__div__
+viff.field.GF256.__mul__	viff.field.GF256-class.html#__mul__
+viff.field.GF256.__repr__	viff.field.GF256-class.html#__repr__
+viff.field.GF256.__floordiv__	viff.field.GF256-class.html#__floordiv__
+viff.field.GF256.__hash__	viff.field.GF256-class.html#__hash__
+viff.field.GF256.__sub__	viff.field.GF256-class.html#__sub__
+viff.field2.FieldElement	viff.field2.FieldElement-class.html
+viff.field2.GFElement	viff.field2.GFElement-class.html
+viff.field2.GFElement.__rtruediv__	viff.field2.GFElement-class.html#__rtruediv__
+viff.field2.GFElement.__str__	viff.field2.GFElement-class.html#__str__
+viff.field2.GFElement.__radd__	viff.field2.GFElement-class.html#__radd__
+viff.field2.GFElement.__truediv__	viff.field2.GFElement-class.html#__truediv__
+viff.field2.GFElement.__rsub__	viff.field2.GFElement-class.html#__rsub__
+viff.field2.GFElement.__rdiv__	viff.field2.GFElement-class.html#__rdiv__
+viff.field2.GFElement.__rmul__	viff.field2.GFElement-class.html#__rmul__
+viff.field2.GFElement.__init__	viff.field2.GFElement-class.html#__init__
+viff.field2.GFElement.sqrt	viff.field2.GFElement-class.html#sqrt
+viff.field2.GFElement.__cmp__	viff.field2.GFElement-class.html#__cmp__
+viff.field2.GFElement.__rfloordiv__	viff.field2.GFElement-class.html#__rfloordiv__
+viff.field2.GFElement.__neg__	viff.field2.GFElement-class.html#__neg__
+viff.field2.GFElement.__invert__	viff.field2.GFElement-class.html#__invert__
+viff.field2.GFElement.__pow__	viff.field2.GFElement-class.html#__pow__
+viff.field2.GFElement.__add__	viff.field2.GFElement-class.html#__add__
+viff.field2.GFElement.bit	viff.field2.GFElement-class.html#bit
+viff.field2.GFElement.__eq__	viff.field2.GFElement-class.html#__eq__
+viff.field2.GFElement.__repr__	viff.field2.GFElement-class.html#__repr__
+viff.field2.GFElement.__nonzero__	viff.field2.GFElement-class.html#__nonzero__
+viff.field2.GFElement.__div__	viff.field2.GFElement-class.html#__div__
+viff.field2.GFElement.__mul__	viff.field2.GFElement-class.html#__mul__
+viff.field2.GFElement.__floordiv__	viff.field2.GFElement-class.html#__floordiv__
+viff.field2.GFElement.__hash__	viff.field2.GFElement-class.html#__hash__
+viff.field2.GFElement.__sub__	viff.field2.GFElement-class.html#__sub__
+viff.matrix.Matrix	viff.matrix.Matrix-class.html
+viff.matrix.Matrix.determinant	viff.matrix.Matrix-class.html#determinant
+viff.matrix.Matrix.__add__	viff.matrix.Matrix-class.html#__add__
+viff.matrix.Matrix.__getitem__	viff.matrix.Matrix-class.html#__getitem__
+viff.matrix.Matrix.__str__	viff.matrix.Matrix-class.html#__str__
+viff.matrix.Matrix.transpose	viff.matrix.Matrix-class.html#transpose
+viff.matrix.Matrix.__radd__	viff.matrix.Matrix-class.html#__radd__
+viff.matrix.Matrix.__setitem__	viff.matrix.Matrix-class.html#__setitem__
+viff.matrix.Matrix._init_set	viff.matrix.Matrix-class.html#_init_set
+viff.matrix.Matrix._init_zeros	viff.matrix.Matrix-class.html#_init_zeros
+viff.matrix.Matrix.__rmul__	viff.matrix.Matrix-class.html#__rmul__
+viff.matrix.Matrix.__init__	viff.matrix.Matrix-class.html#__init__
+viff.matrix.Matrix.__mul__	viff.matrix.Matrix-class.html#__mul__
+viff.prss.PRF	viff.prss.PRF-class.html
+viff.prss.PRF.__call__	viff.prss.PRF-class.html#__call__
+viff.prss.PRF.__init__	viff.prss.PRF-class.html#__init__
+viff.runtime.ActiveRuntime	viff.runtime.ActiveRuntime-class.html
+viff.runtime.BasicRuntime.num_players	viff.runtime.BasicRuntime-class.html#num_players
+viff.runtime.ActiveRuntime.get_triple	viff.runtime.ActiveRuntime-class.html#get_triple
+viff.runtime.BasicRuntime._expect_data	viff.runtime.BasicRuntime-class.html#_expect_data
+viff.runtime.BasicRuntime.add_player	viff.runtime.BasicRuntime-class.html#add_player
+viff.runtime.BasicRuntime._exchange_shares	viff.runtime.BasicRuntime-class.html#_exchange_shares
+viff.runtime.BasicRuntime.shutdown	viff.runtime.BasicRuntime-class.html#shutdown
+viff.runtime.BasicRuntime.threshold	viff.runtime.BasicRuntime-class.html#threshold
+viff.runtime.BasicRuntime.wait_for	viff.runtime.BasicRuntime-class.html#wait_for
+viff.runtime.Runtime.open	viff.runtime.Runtime-class.html#open
+viff.runtime.ActiveRuntime._hyper	viff.runtime.ActiveRuntime-class.html#_hyper
+viff.runtime.ActiveRuntime.__init__	viff.runtime.ActiveRuntime-class.html#__init__
+viff.runtime.Runtime.xor	viff.runtime.Runtime-class.html#xor
+viff.runtime.Runtime.sub	viff.runtime.Runtime-class.html#sub
+viff.runtime.BasicRuntime.synchronize	viff.runtime.BasicRuntime-class.html#synchronize
+viff.runtime.BasicRuntime.id	viff.runtime.BasicRuntime-class.html#id
+viff.runtime.Runtime.add	viff.runtime.Runtime-class.html#add
+viff.runtime.ActiveRuntime.generate_triples	viff.runtime.ActiveRuntime-class.html#generate_triples
+viff.runtime.BasicRuntime.preprocess	viff.runtime.BasicRuntime-class.html#preprocess
+viff.runtime.ActiveRuntime.mul	viff.runtime.ActiveRuntime-class.html#mul
+viff.runtime.ActiveRuntime._broadcast	viff.runtime.ActiveRuntime-class.html#_broadcast
+viff.runtime.Runtime._recombine	viff.runtime.Runtime-class.html#_recombine
+viff.runtime.BasicRuntime.schedule_callback	viff.runtime.BasicRuntime-class.html#schedule_callback
+viff.runtime.BasicRuntime.add_options	viff.runtime.BasicRuntime-class.html#add_options
+viff.runtime.ActiveRuntime.double_share_random	viff.runtime.ActiveRuntime-class.html#double_share_random
+viff.runtime.BasicRuntime._expect_share	viff.runtime.BasicRuntime-class.html#_expect_share
+viff.runtime.ActiveRuntime.broadcast	viff.runtime.ActiveRuntime-class.html#broadcast
+viff.runtime.ActiveRuntime.single_share_random	viff.runtime.ActiveRuntime-class.html#single_share_random
+viff.runtime.BasicRuntime.program_counter	viff.runtime.BasicRuntime-class.html#program_counter
+viff.runtime.Runtime.prss_share_random	viff.runtime.Runtime-class.html#prss_share_random
+viff.runtime.BasicRuntime.protocols	viff.runtime.BasicRuntime-class.html#protocols
+viff.runtime.Runtime.shamir_share	viff.runtime.Runtime-class.html#shamir_share
+viff.runtime.Runtime._shamir_share	viff.runtime.Runtime-class.html#_shamir_share
+viff.runtime.BasicRuntime._pool	viff.runtime.BasicRuntime-class.html#_pool
+viff.runtime.BasicRuntime._needed_data	viff.runtime.BasicRuntime-class.html#_needed_data
+viff.runtime.BasicRuntime.players	viff.runtime.BasicRuntime-class.html#players
+viff.runtime.Runtime.prss_share	viff.runtime.Runtime-class.html#prss_share
+viff.runtime.BasicRuntime	viff.runtime.BasicRuntime-class.html
+viff.runtime.BasicRuntime.num_players	viff.runtime.BasicRuntime-class.html#num_players
+viff.runtime.BasicRuntime.schedule_callback	viff.runtime.BasicRuntime-class.html#schedule_callback
+viff.runtime.BasicRuntime._expect_data	viff.runtime.BasicRuntime-class.html#_expect_data
+viff.runtime.BasicRuntime.add_options	viff.runtime.BasicRuntime-class.html#add_options
+viff.runtime.BasicRuntime.players	viff.runtime.BasicRuntime-class.html#players
+viff.runtime.BasicRuntime.add_player	viff.runtime.BasicRuntime-class.html#add_player
+viff.runtime.BasicRuntime._exchange_shares	viff.runtime.BasicRuntime-class.html#_exchange_shares
+viff.runtime.BasicRuntime._pool	viff.runtime.BasicRuntime-class.html#_pool
+viff.runtime.BasicRuntime._expect_share	viff.runtime.BasicRuntime-class.html#_expect_share
+viff.runtime.BasicRuntime._needed_data	viff.runtime.BasicRuntime-class.html#_needed_data
+viff.runtime.BasicRuntime.synchronize	viff.runtime.BasicRuntime-class.html#synchronize
+viff.runtime.BasicRuntime.program_counter	viff.runtime.BasicRuntime-class.html#program_counter
+viff.runtime.BasicRuntime.threshold	viff.runtime.BasicRuntime-class.html#threshold
+viff.runtime.BasicRuntime.protocols	viff.runtime.BasicRuntime-class.html#protocols
+viff.runtime.BasicRuntime.shutdown	viff.runtime.BasicRuntime-class.html#shutdown
+viff.runtime.BasicRuntime.preprocess	viff.runtime.BasicRuntime-class.html#preprocess
+viff.runtime.BasicRuntime.wait_for	viff.runtime.BasicRuntime-class.html#wait_for
+viff.runtime.BasicRuntime.id	viff.runtime.BasicRuntime-class.html#id
+viff.runtime.BasicRuntime.__init__	viff.runtime.BasicRuntime-class.html#__init__
+viff.runtime.Runtime	viff.runtime.Runtime-class.html
+viff.runtime.BasicRuntime.num_players	viff.runtime.BasicRuntime-class.html#num_players
+viff.runtime.BasicRuntime._expect_data	viff.runtime.BasicRuntime-class.html#_expect_data
+viff.runtime.BasicRuntime.add_player	viff.runtime.BasicRuntime-class.html#add_player
+viff.runtime.BasicRuntime._exchange_shares	viff.runtime.BasicRuntime-class.html#_exchange_shares
+viff.runtime.BasicRuntime.shutdown	viff.runtime.BasicRuntime-class.html#shutdown
+viff.runtime.BasicRuntime.threshold	viff.runtime.BasicRuntime-class.html#threshold
+viff.runtime.BasicRuntime.wait_for	viff.runtime.BasicRuntime-class.html#wait_for
+viff.runtime.Runtime.open	viff.runtime.Runtime-class.html#open
+viff.runtime.BasicRuntime.id	viff.runtime.BasicRuntime-class.html#id
+viff.runtime.Runtime.__init__	viff.runtime.Runtime-class.html#__init__
+viff.runtime.Runtime.xor	viff.runtime.Runtime-class.html#xor
+viff.runtime.Runtime.sub	viff.runtime.Runtime-class.html#sub
+viff.runtime.BasicRuntime.players	viff.runtime.BasicRuntime-class.html#players
+viff.runtime.Runtime.add	viff.runtime.Runtime-class.html#add
+viff.runtime.BasicRuntime.preprocess	viff.runtime.BasicRuntime-class.html#preprocess
+viff.runtime.Runtime.mul	viff.runtime.Runtime-class.html#mul
+viff.runtime.Runtime._recombine	viff.runtime.Runtime-class.html#_recombine
+viff.runtime.BasicRuntime.schedule_callback	viff.runtime.BasicRuntime-class.html#schedule_callback
+viff.runtime.BasicRuntime.add_options	viff.runtime.BasicRuntime-class.html#add_options
+viff.runtime.BasicRuntime._expect_share	viff.runtime.BasicRuntime-class.html#_expect_share
+viff.runtime.BasicRuntime.program_counter	viff.runtime.BasicRuntime-class.html#program_counter
+viff.runtime.Runtime.prss_share_random	viff.runtime.Runtime-class.html#prss_share_random
+viff.runtime.BasicRuntime.protocols	viff.runtime.BasicRuntime-class.html#protocols
+viff.runtime.Runtime.shamir_share	viff.runtime.Runtime-class.html#shamir_share
+viff.runtime.Runtime._shamir_share	viff.runtime.Runtime-class.html#_shamir_share
+viff.runtime.BasicRuntime._pool	viff.runtime.BasicRuntime-class.html#_pool
+viff.runtime.BasicRuntime._needed_data	viff.runtime.BasicRuntime-class.html#_needed_data
+viff.runtime.BasicRuntime.synchronize	viff.runtime.BasicRuntime-class.html#synchronize
+viff.runtime.Runtime.prss_share	viff.runtime.Runtime-class.html#prss_share
+viff.runtime.Share	viff.runtime.Share-class.html
+viff.runtime.Share.__radd__	viff.runtime.Share-class.html#__radd__
+viff.runtime.Share.__rsub__	viff.runtime.Share-class.html#__rsub__
+viff.runtime.Share.__rmul__	viff.runtime.Share-class.html#__rmul__
+viff.runtime.Share.__lt__	viff.runtime.Share-class.html#__lt__
+viff.runtime.Share.__init__	viff.runtime.Share-class.html#__init__
+viff.runtime.Share.clone	viff.runtime.Share-class.html#clone
+viff.runtime.Share.__add__	viff.runtime.Share-class.html#__add__
+viff.runtime.Share.__gt__	viff.runtime.Share-class.html#__gt__
+viff.runtime.Share.__rxor__	viff.runtime.Share-class.html#__rxor__
+viff.runtime.Share.__xor__	viff.runtime.Share-class.html#__xor__
+viff.runtime.Share.__le__	viff.runtime.Share-class.html#__le__
+viff.runtime.Share.__mul__	viff.runtime.Share-class.html#__mul__
+viff.runtime.Share.__sub__	viff.runtime.Share-class.html#__sub__
+viff.runtime.Share.__ge__	viff.runtime.Share-class.html#__ge__
+viff.runtime.ShareExchanger	viff.runtime.ShareExchanger-class.html
+viff.runtime.ShareExchanger.connectionMade	viff.runtime.ShareExchanger-class.html#connectionMade
+viff.runtime.ShareExchanger.sendData	viff.runtime.ShareExchanger-class.html#sendData
+viff.runtime.ShareExchanger.stringReceived	viff.runtime.ShareExchanger-class.html#stringReceived
+viff.runtime.ShareExchanger.incoming_data	viff.runtime.ShareExchanger-class.html#incoming_data
+viff.runtime.ShareExchanger.sendShare	viff.runtime.ShareExchanger-class.html#sendShare
+viff.runtime.ShareExchanger.loseConnection	viff.runtime.ShareExchanger-class.html#loseConnection
+viff.runtime.ShareExchanger.__init__	viff.runtime.ShareExchanger-class.html#__init__
+viff.runtime.ShareExchangerFactory	viff.runtime.ShareExchangerFactory-class.html
+viff.runtime.ShareExchangerFactory.protocol	viff.runtime.ShareExchanger-class.html
+viff.runtime.ShareExchangerFactory.identify_peer	viff.runtime.ShareExchangerFactory-class.html#identify_peer
+viff.runtime.ShareExchangerFactory.__init__	viff.runtime.ShareExchangerFactory-class.html#__init__
+viff.runtime.ShareList	viff.runtime.ShareList-class.html
+viff.runtime.Share.__radd__	viff.runtime.Share-class.html#__radd__
+viff.runtime.Share.__rsub__	viff.runtime.Share-class.html#__rsub__
+viff.runtime.Share.__rmul__	viff.runtime.Share-class.html#__rmul__
+viff.runtime.Share.__lt__	viff.runtime.Share-class.html#__lt__
+viff.runtime.ShareList.__init__	viff.runtime.ShareList-class.html#__init__
+viff.runtime.Share.clone	viff.runtime.Share-class.html#clone
+viff.runtime.Share.__add__	viff.runtime.Share-class.html#__add__
+viff.runtime.Share.__gt__	viff.runtime.Share-class.html#__gt__
+viff.runtime.Share.__rxor__	viff.runtime.Share-class.html#__rxor__
+viff.runtime.ShareList._callback_fired	viff.runtime.ShareList-class.html#_callback_fired
+viff.runtime.Share.__xor__	viff.runtime.Share-class.html#__xor__
+viff.runtime.Share.__le__	viff.runtime.Share-class.html#__le__
+viff.runtime.Share.__mul__	viff.runtime.Share-class.html#__mul__
+viff.runtime.Share.__sub__	viff.runtime.Share-class.html#__sub__
+viff.runtime.Share.__ge__	viff.runtime.Share-class.html#__ge__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/class-tree.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,255 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Class Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="class-tree.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Class Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink">twisted.internet.protocol.BaseProtocol</strong>:
+      <em class="summary">This is the abstract superclass of all protocols.</em>
+    <ul>
+    <li> <strong class="uidlink">twisted.internet.protocol.Protocol</strong>
+    <ul>
+    <li> <strong class="uidlink">twisted.protocols.basic.Int16StringReceiver</strong>:
+      <em class="summary">A receiver for int16-prefixed strings.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.ShareExchanger-class.html">viff.runtime.ShareExchanger</a></strong>:
+      <em class="summary">Send and receive shares.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.runtime.BasicRuntime-class.html">viff.runtime.BasicRuntime</a></strong>:
+      <em class="summary">Basic VIFF runtime with no crypto.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.Runtime-class.html">viff.runtime.Runtime</a></strong>:
+      <em class="summary">The VIFF runtime.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.ActiveRuntime-class.html">viff.runtime.ActiveRuntime</a></strong>:
+      <em class="summary">A runtime secure against active adversaries.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.comparison.Toft05Runtime-class.html">viff.comparison.Toft05Runtime</a></strong>:
+      <em class="summary">Default mix of <a 
+        href="viff.comparison.ComparisonToft05Mixin-class.html" 
+        class="link">ComparisonToft05Mixin</a> and <a 
+        href="viff.runtime.Runtime-class.html" class="link">Runtime</a>.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.comparison.Toft07Runtime-class.html">viff.comparison.Toft07Runtime</a></strong>:
+      <em class="summary">Default mix of <a 
+        href="viff.comparison.ComparisonToft07Mixin-class.html" 
+        class="link">ComparisonToft07Mixin</a> and <a 
+        href="viff.runtime.Runtime-class.html" class="link">Runtime</a>.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.comparison.ComparisonToft05Mixin-class.html">viff.comparison.ComparisonToft05Mixin</a></strong>:
+      <em class="summary">Comparison by Tomas Toft, 2005.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.comparison.Toft05Runtime-class.html">viff.comparison.Toft05Runtime</a></strong>:
+      <em class="summary">Default mix of <a 
+        href="viff.comparison.ComparisonToft05Mixin-class.html" 
+        class="link">ComparisonToft05Mixin</a> and <a 
+        href="viff.runtime.Runtime-class.html" class="link">Runtime</a>.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.comparison.ComparisonToft07Mixin-class.html">viff.comparison.ComparisonToft07Mixin</a></strong>:
+      <em class="summary">Efficient comparison by Tomas Toft 2007.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.comparison.Toft07Runtime-class.html">viff.comparison.Toft07Runtime</a></strong>:
+      <em class="summary">Default mix of <a 
+        href="viff.comparison.ComparisonToft07Mixin-class.html" 
+        class="link">ComparisonToft07Mixin</a> and <a 
+        href="viff.runtime.Runtime-class.html" class="link">Runtime</a>.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">twisted.internet.defer.Deferred</strong>:
+      <em class="summary">This is a callback which will be put off until later.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.Share-class.html">viff.runtime.Share</a></strong>:
+      <em class="summary">A shared number.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.ShareList-class.html">viff.runtime.ShareList</a></strong>:
+      <em class="summary">Create a share that waits on a number of other shares.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">twisted.internet.protocol.Factory</strong>:
+      <em class="summary">This is a factory which produces protocols.</em>
+    <ul>
+    <li> <strong class="uidlink">twisted.internet.protocol.ClientFactory</strong>:
+      <em class="summary">A Protocol factory for clients.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.ShareExchangerFactory-class.html">viff.runtime.ShareExchangerFactory</a></strong>:
+      <em class="summary">Factory for creating ShareExchanger protocols.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">twisted.internet.protocol.ServerFactory</strong>:
+      <em class="summary">Subclass this to indicate that your protocol.Factory is only usable
+        for servers.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.ShareExchangerFactory-class.html">viff.runtime.ShareExchangerFactory</a></strong>:
+      <em class="summary">Factory for creating ShareExchanger protocols.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.config.Player-class.html">viff.config.Player</a></strong>:
+      <em class="summary">Wrapper for information about a player in the protocol.</em>
+    </li>
+    <li> <strong class="uidlink">twisted.protocols.basic._PauseableMixin</strong>
+    <ul>
+    <li> <strong class="uidlink">twisted.protocols.basic.Int16StringReceiver</strong>:
+      <em class="summary">A receiver for int16-prefixed strings.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.runtime.ShareExchanger-class.html">viff.runtime.ShareExchanger</a></strong>:
+      <em class="summary">Send and receive shares.</em>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">object</strong>:
+      <em class="summary">The most base type</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.field.FieldElement-class.html">viff.field.FieldElement</a></strong>:
+      <em class="summary">Common base class for elements.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.field.GF256-class.html">viff.field.GF256</a></strong>:
+      <em class="summary">Models an element of the GF(2^8) field.</em>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.field2.FieldElement-class.html">viff.field2.FieldElement</a></strong>:
+      <em class="summary">Common base class for elements.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.field2.GFElement-class.html">viff.field2.GFElement</a></strong>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.matrix.Matrix-class.html">viff.matrix.Matrix</a></strong>:
+      <em class="summary">A matrix.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="viff.prss.PRF-class.html">viff.prss.PRF</a></strong>:
+      <em class="summary">Models a pseudo random function (a PRF).</em>
+    </li>
+    </ul>
+    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Apr 23 08:39:41 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
Binary file api/0.5rc1/class_hierarchy_for_activerunt.gif has changed
Binary file api/0.5rc1/class_hierarchy_for_basicrunti.gif has changed
Binary file api/0.5rc1/class_hierarchy_for_comparison.gif has changed
Binary file api/0.5rc1/class_hierarchy_for_comparison_2.gif has changed
Binary file api/0.5rc1/class_hierarchy_for_fieldeleme.gif has changed
Binary file api/0.5rc1/class_hierarchy_for_fieldeleme_2.gif has changed
Binary file api/0.5rc1/class_hierarchy_for_gf256.gif has changed
Binary file api/0.5rc1/class_hierarchy_for_gfelement.gif has changed
Binary file api/0.5rc1/class_hierarchy_for_matrix.gif has changed
Binary file api/0.5rc1/class_hierarchy_for_prf.gif has changed
Binary file api/0.5rc1/class_hierarchy_for_runtime.gif has changed
Binary file api/0.5rc1/class_hierarchy_for_share.gif has changed
Binary file api/0.5rc1/class_hierarchy_for_shareexcha.gif has changed
Binary file api/0.5rc1/class_hierarchy_for_shareexcha_2.gif has changed
Binary file api/0.5rc1/class_hierarchy_for_sharelist.gif has changed
Binary file api/0.5rc1/class_hierarchy_for_toft05runt.gif has changed
Binary file api/0.5rc1/class_hierarchy_for_toft07runt.gif has changed
Binary file api/0.5rc1/crarr.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/epydoc-log.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Epydoc Log</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="epydoc">Epydoc Log</h1>
+<p class="log">Epydoc started at Wed Apr 23 08:39:38 2008</p><div class="log-block"><h2 class="log-hdr">In /users/mg/src/viff/viff/test/__init__.py:
+No documentation available!</h2></div><div class="log-info">No warnings or errors!</div><div class="log-block"><h2 class="log-hdr">Epydoc Options</h2><div class="log-info">
+<table border="0" cellpadding="0" cellspacing="0">
+<tr valign="top" class="opt-changed"><td valign="top">configfiles</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>['epydoc.conf']</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">include_log</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">names</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>['viff']</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">prj_name</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'VIFF: Virtual Ideal Functionality Framework'</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">prj_url</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'http://viff.dk/'</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">target</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'doc/api'</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">verbose</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>2</tt></td></tr><tr valign="top" class="opt-changed"><td valign="top">verbosity</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>2</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">action</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'html'</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">css</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">debug</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">docformat</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'epytext'</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">dotpath</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">exclude</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>['test']</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">exclude_introspect</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">exclude_parse</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">external_api</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">external_api_file</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">external_api_root</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">fail_on</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">graph_font</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">graph_font_size</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">graphs</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>['classtree']</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">help_file</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">include_source_code</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">inheritance</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>'listed'</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">introspect</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">list_classes_separately</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">load_pickle</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">parse</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">prj_link</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">profile</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">pstat_files</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>[]</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">quiet</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>0</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">redundant_details</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">show_frames</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">show_imports</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">show_private</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>True</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">simple_term</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>False</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">src_code_tab_width</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>8</tt></td></tr><tr valign="top" class="opt-default"><td valign="top">top_page</td><td valign="top"><tt>&nbsp;=&nbsp;</tt></td><td valign="top"><tt>None</tt></td></tr></table>
+</div>
+</div><p class="log">Epydoc finished at Wed Apr 23 08:39:44 2008</p>
+<p class="log">(Elapsed time: 5 seconds)</p></body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/epydoc.css	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,322 @@
+
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc's
+ * HTML output.
+ *
+ */
+
+/* Default Colors & Styles
+ *   - Set the default foreground & background color with 'body'; and 
+ *     link colors with 'a:link' and 'a:visited'.
+ *   - Use bold for decision list terms.
+ *   - The heading styles defined here are used for headings *within*
+ *     docstring descriptions.  All headings used by epydoc itself use
+ *     either class='epydoc' or class='toc' (CSS styles for both
+ *     defined below).
+ */
+body                        { background: #ffffff; color: #000000; }
+p                           { margin-top: 0.5em; margin-bottom: 0.5em; }
+a:link                      { color: #0000ff; }
+a:visited                   { color: #204080; }
+dt                          { font-weight: bold; }
+h1                          { font-size: +140%; font-style: italic;
+                              font-weight: bold; }
+h2                          { font-size: +125%; font-style: italic;
+                              font-weight: bold; }
+h3                          { font-size: +110%; font-style: italic;
+                              font-weight: normal; }
+code                        { font-size: 100%; }
+/* N.B.: class, not pseudoclass */
+a.link                      { font-family: monospace; }
+ 
+/* Page Header & Footer
+ *   - The standard page header consists of a navigation bar (with
+ *     pointers to standard pages such as 'home' and 'trees'); a
+ *     breadcrumbs list, which can be used to navigate to containing
+ *     classes or modules; options links, to show/hide private
+ *     variables and to show/hide frames; and a page title (using
+ *     <h1>).  The page title may be followed by a link to the
+ *     corresponding source code (using 'span.codelink').
+ *   - The footer consists of a navigation bar, a timestamp, and a
+ *     pointer to epydoc's homepage.
+ */ 
+h1.epydoc                   { margin: 0; font-size: +140%; font-weight: bold; }
+h2.epydoc                   { font-size: +130%; font-weight: bold; }
+h3.epydoc                   { font-size: +115%; font-weight: bold;
+                              margin-top: 0.2em; }
+td h3.epydoc                { font-size: +115%; font-weight: bold;
+                              margin-bottom: 0; }
+table.navbar                { background: #a0c0ff; color: #000000;
+                              border: 2px groove #c0d0d0; }
+table.navbar table          { color: #000000; }
+th.navbar-select            { background: #70b0ff;
+                              color: #000000; } 
+table.navbar a              { text-decoration: none; }  
+table.navbar a:link         { color: #0000ff; }
+table.navbar a:visited      { color: #204080; }
+span.breadcrumbs            { font-size: 85%; font-weight: bold; }
+span.options                { font-size: 70%; }
+span.codelink               { font-size: 85%; }
+td.footer                   { font-size: 85%; }
+
+/* Table Headers
+ *   - Each summary table and details section begins with a 'header'
+ *     row.  This row contains a section title (marked by
+ *     'span.table-header') as well as a show/hide private link
+ *     (marked by 'span.options', defined above).
+ *   - Summary tables that contain user-defined groups mark those
+ *     groups using 'group header' rows.
+ */
+td.table-header             { background: #70b0ff; color: #000000;
+                              border: 1px solid #608090; }
+td.table-header table       { color: #000000; }
+td.table-header table a:link      { color: #0000ff; }
+td.table-header table a:visited   { color: #204080; }
+span.table-header           { font-size: 120%; font-weight: bold; }
+th.group-header             { background: #c0e0f8; color: #000000;
+                              text-align: left; font-style: italic; 
+                              font-size: 115%; 
+                              border: 1px solid #608090; }
+
+/* Summary Tables (functions, variables, etc)
+ *   - Each object is described by a single row of the table with
+ *     two cells.  The left cell gives the object's type, and is
+ *     marked with 'code.summary-type'.  The right cell gives the
+ *     object's name and a summary description.
+ *   - CSS styles for the table's header and group headers are
+ *     defined above, under 'Table Headers'
+ */
+table.summary               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin-bottom: 0.5em; }
+td.summary                  { border: 1px solid #608090; }
+code.summary-type           { font-size: 85%; }
+table.summary a:link        { color: #0000ff; }
+table.summary a:visited     { color: #204080; }
+
+
+/* Details Tables (functions, variables, etc)
+ *   - Each object is described in its own div.
+ *   - A single-row summary table w/ table-header is used as
+ *     a header for each details section (CSS style for table-header
+ *     is defined above, under 'Table Headers').
+ */
+table.details               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin: .2em 0 0 0; }
+table.details table         { color: #000000; }
+table.details a:link        { color: #0000ff; }
+table.details a:visited     { color: #204080; }
+
+/* Fields */
+dl.fields                   { margin-left: 2em; margin-top: 1em;
+                              margin-bottom: 1em; }
+dl.fields dd ul             { margin-left: 0em; padding-left: 0em; }
+dl.fields dd ul li ul       { margin-left: 2em; padding-left: 0em; }
+div.fields                  { margin-left: 2em; }
+div.fields p                { margin-bottom: 0.5em; }
+
+/* Index tables (identifier index, term index, etc)
+ *   - link-index is used for indices containing lists of links
+ *     (namely, the identifier index & term index).
+ *   - index-where is used in link indices for the text indicating
+ *     the container/source for each link.
+ *   - metadata-index is used for indices containing metadata
+ *     extracted from fields (namely, the bug index & todo index).
+ */
+table.link-index            { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; }
+td.link-index               { border-width: 0px; }
+table.link-index a:link     { color: #0000ff; }
+table.link-index a:visited  { color: #204080; }
+span.index-where            { font-size: 70%; }
+table.metadata-index        { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; 
+                              margin: .2em 0 0 0; }
+td.metadata-index           { border-width: 1px; border-style: solid; }
+table.metadata-index a:link { color: #0000ff; }
+table.metadata-index a:visited  { color: #204080; }
+
+/* Function signatures
+ *   - sig* is used for the signature in the details section.
+ *   - .summary-sig* is used for the signature in the summary 
+ *     table, and when listing property accessor functions.
+ * */
+.sig-name                   { color: #006080; }
+.sig-arg                    { color: #008060; }
+.sig-default                { color: #602000; }
+.summary-sig                { font-family: monospace; }
+.summary-sig-name           { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:link
+                            { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:visited
+                            { color: #006080; font-weight: bold; }
+.summary-sig-arg            { color: #006040; }
+.summary-sig-default        { color: #501800; }
+
+/* Subclass list
+ */
+ul.subclass-list { display: inline; }
+ul.subclass-list li { display: inline; }
+
+/* To render variables, classes etc. like functions */
+table.summary .summary-name { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+     a.summary-name:link    { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+    a.summary-name:visited  { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+
+/* Variable values
+ *   - In the 'variable details' sections, each varaible's value is
+ *     listed in a 'pre.variable' box.  The width of this box is
+ *     restricted to 80 chars; if the value's repr is longer than
+ *     this it will be wrapped, using a backslash marked with
+ *     class 'variable-linewrap'.  If the value's repr is longer
+ *     than 3 lines, the rest will be ellided; and an ellipsis
+ *     marker ('...' marked with 'variable-ellipsis') will be used.
+ *   - If the value is a string, its quote marks will be marked
+ *     with 'variable-quote'.
+ *   - If the variable is a regexp, it is syntax-highlighted using
+ *     the re* CSS classes.
+ */
+pre.variable                { padding: .5em; margin: 0;
+                              background: #dce4ec; color: #000000;
+                              border: 1px solid #708890; }
+.variable-linewrap          { color: #604000; font-weight: bold; }
+.variable-ellipsis          { color: #604000; font-weight: bold; }
+.variable-quote             { color: #604000; font-weight: bold; }
+.variable-group             { color: #008000; font-weight: bold; }
+.variable-op                { color: #604000; font-weight: bold; }
+.variable-string            { color: #006030; }
+.variable-unknown           { color: #a00000; font-weight: bold; }
+.re                         { color: #000000; }
+.re-char                    { color: #006030; }
+.re-op                      { color: #600000; }
+.re-group                   { color: #003060; }
+.re-ref                     { color: #404040; }
+
+/* Base tree
+ *   - Used by class pages to display the base class hierarchy.
+ */
+pre.base-tree               { font-size: 80%; margin: 0; }
+
+/* Frames-based table of contents headers
+ *   - Consists of two frames: one for selecting modules; and
+ *     the other listing the contents of the selected module.
+ *   - h1.toc is used for each frame's heading
+ *   - h2.toc is used for subheadings within each frame.
+ */
+h1.toc                      { text-align: center; font-size: 105%;
+                              margin: 0; font-weight: bold;
+                              padding: 0; }
+h2.toc                      { font-size: 100%; font-weight: bold; 
+                              margin: 0.5em 0 0 -0.3em; }
+
+/* Syntax Highlighting for Source Code
+ *   - doctest examples are displayed in a 'pre.py-doctest' block.
+ *     If the example is in a details table entry, then it will use
+ *     the colors specified by the 'table pre.py-doctest' line.
+ *   - Source code listings are displayed in a 'pre.py-src' block.
+ *     Each line is marked with 'span.py-line' (used to draw a line
+ *     down the left margin, separating the code from the line
+ *     numbers).  Line numbers are displayed with 'span.py-lineno'.
+ *     The expand/collapse block toggle button is displayed with
+ *     'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
+ *     modify the font size of the text.)
+ *   - If a source code page is opened with an anchor, then the
+ *     corresponding code block will be highlighted.  The code
+ *     block's header is highlighted with 'py-highlight-hdr'; and
+ *     the code block's body is highlighted with 'py-highlight'.
+ *   - The remaining py-* classes are used to perform syntax
+ *     highlighting (py-string for string literals, py-name for names,
+ *     etc.)
+ */
+pre.py-doctest              { padding: .5em; margin: 1em;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #708890; }
+table pre.py-doctest        { background: #dce4ec;
+                              color: #000000; }
+pre.py-src                  { border: 2px solid #000000; 
+                              background: #f0f0f0; color: #000000; }
+.py-line                    { border-left: 2px solid #000000; 
+                              margin-left: .2em; padding-left: .4em; }
+.py-lineno                  { font-style: italic; font-size: 90%;
+                              padding-left: .5em; }
+a.py-toggle                 { text-decoration: none; }
+div.py-highlight-hdr        { border-top: 2px solid #000000;
+                              border-bottom: 2px solid #000000;
+                              background: #d8e8e8; }
+div.py-highlight            { border-bottom: 2px solid #000000;
+                              background: #d0e0e0; }
+.py-prompt                  { color: #005050; font-weight: bold;}
+.py-more                    { color: #005050; font-weight: bold;}
+.py-string                  { color: #006030; }
+.py-comment                 { color: #003060; }
+.py-keyword                 { color: #600000; }
+.py-output                  { color: #404040; }
+.py-name                    { color: #000050; }
+.py-name:link               { color: #000050 !important; }
+.py-name:visited            { color: #000050 !important; }
+.py-number                  { color: #005000; }
+.py-defname                 { color: #000060; font-weight: bold; }
+.py-def-name                { color: #000060; font-weight: bold; }
+.py-base-class              { color: #000060; }
+.py-param                   { color: #000060; }
+.py-docstring               { color: #006030; }
+.py-decorator               { color: #804020; }
+/* Use this if you don't want links to names underlined: */
+/*a.py-name                   { text-decoration: none; }*/
+
+/* Graphs & Diagrams
+ *   - These CSS styles are used for graphs & diagrams generated using
+ *     Graphviz dot.  'img.graph-without-title' is used for bare
+ *     diagrams (to remove the border created by making the image
+ *     clickable).
+ */
+img.graph-without-title     { border: none; }
+img.graph-with-title        { border: 1px solid #000000; }
+span.graph-title            { font-weight: bold; }
+span.graph-caption          { }
+
+/* General-purpose classes
+ *   - 'p.indent-wrapped-lines' defines a paragraph whose first line
+ *     is not indented, but whose subsequent lines are.
+ *   - The 'nomargin-top' class is used to remove the top margin (e.g.
+ *     from lists).  The 'nomargin' class is used to remove both the
+ *     top and bottom margin (but not the left or right margin --
+ *     for lists, that would cause the bullets to disappear.)
+ */
+p.indent-wrapped-lines      { padding: 0 0 0 7em; text-indent: -7em; 
+                              margin: 0; }
+.nomargin-top               { margin-top: 0; }
+.nomargin                   { margin-top: 0; margin-bottom: 0; }
+
+/* HTML Log */
+div.log-block               { padding: 0; margin: .5em 0 .5em 0;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #000000; }
+div.log-error               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffb0b0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-warning             { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffffb0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-info               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #b0ffb0; color: #000000;
+                              border: 1px solid #000000; }
+h2.log-hdr                  { background: #70b0ff; color: #000000;
+                              margin: 0; padding: 0em 0.5em 0em 0.5em;
+                              border-bottom: 1px solid #000000; font-size: 110%; }
+p.log                       { font-weight: bold; margin: .5em 0 .5em 0; }
+tr.opt-changed              { color: #000000; font-weight: bold; }
+tr.opt-default              { color: #606060; }
+pre.log                     { margin: 0; padding: 0; padding-left: 1em; }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/epydoc.js	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,293 @@
+function toggle_private() {
+        // Search for any private/public links on this page.  Store
+        // their old text in "cmd," so we will know what action to
+        // take; and change their text to the opposite action.
+        var cmd = "?";
+        var elts = document.getElementsByTagName("a");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "privatelink") {
+            cmd = elts[i].innerHTML;
+            elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")?
+                                    "hide&nbsp;private":"show&nbsp;private");
+          }
+        }
+        // Update all DIVs containing private objects.
+        var elts = document.getElementsByTagName("div");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
+          }
+          else if (elts[i].className == "public") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none");
+          }
+        }
+        // Update all table rows containing private objects.  Note, we
+        // use "" instead of "block" becaue IE & firefox disagree on what
+        // this should be (block vs table-row), and "" just gives the
+        // default for both browsers.
+        var elts = document.getElementsByTagName("tr");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"");
+          }
+        }
+        // Update all list items containing private objects.
+        var elts = document.getElementsByTagName("li");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?
+                                        "none":"");
+          }
+        }
+        // Update all list items containing private objects.
+        var elts = document.getElementsByTagName("ul");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
+          }
+        }
+        // Set a cookie to remember the current option.
+        document.cookie = "EpydocPrivate="+cmd;
+      }
+function show_private() {
+        var elts = document.getElementsByTagName("a");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "privatelink") {
+            cmd = elts[i].innerHTML;
+            if (cmd && cmd.substr(0,4)=="show")
+                toggle_private();
+          }
+        }
+      }
+function getCookie(name) {
+        var dc = document.cookie;
+        var prefix = name + "=";
+        var begin = dc.indexOf("; " + prefix);
+        if (begin == -1) {
+          begin = dc.indexOf(prefix);
+          if (begin != 0) return null;
+        } else
+        { begin += 2; }
+        var end = document.cookie.indexOf(";", begin);
+        if (end == -1)
+        { end = dc.length; }
+        return unescape(dc.substring(begin + prefix.length, end));
+      }
+function setFrame(url1, url2) {
+          parent.frames[1].location.href = url1;
+          parent.frames[2].location.href = url2;
+      }
+function checkCookie() {
+        var cmd=getCookie("EpydocPrivate");
+        if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0)
+            toggle_private();
+      }
+function toggleCallGraph(id) {
+        var elt = document.getElementById(id);
+        if (elt.style.display == "none")
+            elt.style.display = "block";
+        else
+            elt.style.display = "none";
+      }
+function expand(id) {
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.style.display = "block";
+  var elt = document.getElementById(id+"-expanded-linenums");
+  if (elt) elt.style.display = "block";
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+  var elt = document.getElementById(id+"-collapsed-linenums");
+  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+  var elt = document.getElementById(id+"-toggle");
+  if (elt) { elt.innerHTML = "-"; }
+}
+
+function collapse(id) {
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.style.display = "none";
+  var elt = document.getElementById(id+"-expanded-linenums");
+  if (elt) elt.style.display = "none";
+  var elt = document.getElementById(id+"-collapsed-linenums");
+  if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; }
+  var elt = document.getElementById(id+"-toggle");
+  if (elt) { elt.innerHTML = "+"; }
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) {
+    elt.style.display = "block";
+    
+    var indent = elt.getAttribute("indent");
+    var pad = elt.getAttribute("pad");
+    var s = "<tt class='py-lineno'>";
+    for (var i=0; i<pad.length; i++) { s += "&nbsp;" }
+    s += "</tt>";
+    s += "&nbsp;&nbsp;<tt class='py-line'>";
+    for (var i=0; i<indent.length; i++) { s += "&nbsp;" }
+    s += "<a href='#' onclick='expand(\"" + id;
+    s += "\");return false'>...</a></tt><br />";
+    elt.innerHTML = s;
+  }
+}
+
+function toggle(id) {
+  elt = document.getElementById(id+"-toggle");
+  if (elt.innerHTML == "-")
+      collapse(id); 
+  else
+      expand(id);
+  return false;
+}
+
+function highlight(id) {
+  var elt = document.getElementById(id+"-def");
+  if (elt) elt.className = "py-highlight-hdr";
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.className = "py-highlight";
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) elt.className = "py-highlight";
+}
+
+function num_lines(s) {
+  var n = 1;
+  var pos = s.indexOf("\n");
+  while ( pos > 0) {
+    n += 1;
+    pos = s.indexOf("\n", pos+1);
+  }
+  return n;
+}
+
+// Collapse all blocks that mave more than `min_lines` lines.
+function collapse_all(min_lines) {
+  var elts = document.getElementsByTagName("div");
+  for (var i=0; i<elts.length; i++) {
+    var elt = elts[i];
+    var split = elt.id.indexOf("-");
+    if (split > 0)
+      if (elt.id.substring(split, elt.id.length) == "-expanded")
+        if (num_lines(elt.innerHTML) > min_lines)
+          collapse(elt.id.substring(0, split));
+  }
+}
+
+function expandto(href) {
+  var start = href.indexOf("#")+1;
+  if (start != 0 && start != href.length) {
+    if (href.substring(start, href.length) != "-") {
+      collapse_all(4);
+      pos = href.indexOf(".", start);
+      while (pos != -1) {
+        var id = href.substring(start, pos);
+        expand(id);
+        pos = href.indexOf(".", pos+1);
+      }
+      var id = href.substring(start, href.length);
+      expand(id);
+      highlight(id);
+    }
+  }
+}
+
+function kill_doclink(id) {
+  var parent = document.getElementById(id);
+  parent.removeChild(parent.childNodes.item(0));
+}
+function auto_kill_doclink(ev) {
+  if (!ev) var ev = window.event;
+  if (!this.contains(ev.toElement)) {
+    var parent = document.getElementById(this.parentID);
+    parent.removeChild(parent.childNodes.item(0));
+  }
+}
+
+function doclink(id, name, targets_id) {
+  var elt = document.getElementById(id);
+
+  // If we already opened the box, then destroy it.
+  // (This case should never occur, but leave it in just in case.)
+  if (elt.childNodes.length > 1) {
+    elt.removeChild(elt.childNodes.item(0));
+  }
+  else {
+    // The outer box: relative + inline positioning.
+    var box1 = document.createElement("div");
+    box1.style.position = "relative";
+    box1.style.display = "inline";
+    box1.style.top = 0;
+    box1.style.left = 0;
+  
+    // A shadow for fun
+    var shadow = document.createElement("div");
+    shadow.style.position = "absolute";
+    shadow.style.left = "-1.3em";
+    shadow.style.top = "-1.3em";
+    shadow.style.background = "#404040";
+    
+    // The inner box: absolute positioning.
+    var box2 = document.createElement("div");
+    box2.style.position = "relative";
+    box2.style.border = "1px solid #a0a0a0";
+    box2.style.left = "-.2em";
+    box2.style.top = "-.2em";
+    box2.style.background = "white";
+    box2.style.padding = ".3em .4em .3em .4em";
+    box2.style.fontStyle = "normal";
+    box2.onmouseout=auto_kill_doclink;
+    box2.parentID = id;
+
+    // Get the targets
+    var targets_elt = document.getElementById(targets_id);
+    var targets = targets_elt.getAttribute("targets");
+    var links = "";
+    target_list = targets.split(",");
+    for (var i=0; i<target_list.length; i++) {
+        var target = target_list[i].split("=");
+        links += "<li><a href='" + target[1] + 
+               "' style='text-decoration:none'>" +
+               target[0] + "</a></li>";
+    }
+  
+    // Put it all together.
+    elt.insertBefore(box1, elt.childNodes.item(0));
+    //box1.appendChild(box2);
+    box1.appendChild(shadow);
+    shadow.appendChild(box2);
+    box2.innerHTML =
+        "Which <b>"+name+"</b> do you want to see documentation for?" +
+        "<ul style='margin-bottom: 0;'>" +
+        links + 
+        "<li><a href='#' style='text-decoration:none' " +
+        "onclick='kill_doclink(\""+id+"\");return false;'>"+
+        "<i>None of the above</i></a></li></ul>";
+  }
+  return false;
+}
+
+function get_anchor() {
+          var href = location.href;
+          var start = href.indexOf("#")+1;
+          if ((start != 0) && (start != href.length))
+              return href.substring(start, href.length);
+      }
+function redirect_url(dottedName) {
+          // Scan through each element of the "pages" list, and check
+          // if "name" matches with any of them.
+          for (var i=0; i<pages.length; i++) {
+
+              // Each page has the form "<pagename>-m" or "<pagename>-c";
+              // extract the <pagename> portion & compare it to dottedName.
+              var pagename = pages[i].substring(0, pages[i].length-2);
+              if (pagename == dottedName.substring(0,pagename.length)) {
+
+                  // We've found a page that matches `dottedName`;
+                  // construct its URL, using leftover `dottedName`
+                  // content to form an anchor.
+                  var pagetype = pages[i].charAt(pages[i].length-1);
+                  var url = pagename + ((pagetype=="m")?"-module.html":
+                                                        "-class.html");
+                  if (dottedName.length > pagename.length)
+                      url += "#" + dottedName.substring(pagename.length+1,
+                                                        dottedName.length);
+                  return url;
+              }
+          }
+      }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/frames.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> VIFF: Virtual Ideal Functionality Framework </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="viff-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/help.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Help</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="help.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+
+<h1 class="epydoc"> API Documentation </h1>
+
+<p> This document contains the API (Application Programming Interface)
+documentation for VIFF: Virtual Ideal Functionality Framework.  Documentation for the Python
+objects defined by the project is divided into separate pages for each
+package, module, and class.  The API documentation also includes two
+pages containing information about the project as a whole: a trees
+page, and an index page.  </p>
+
+<h2> Object Documentation </h2>
+
+  <p>Each <strong>Package Documentation</strong> page contains: </p>
+  <ul>
+    <li> A description of the package. </li>
+    <li> A list of the modules and sub-packages contained by the
+    package.  </li>
+    <li> A summary of the classes defined by the package. </li>
+    <li> A summary of the functions defined by the package. </li>
+    <li> A summary of the variables defined by the package. </li>
+    <li> A detailed description of each function defined by the
+    package. </li>
+    <li> A detailed description of each variable defined by the
+    package. </li>
+  </ul>
+  
+  <p>Each <strong>Module Documentation</strong> page contains:</p>
+  <ul>
+    <li> A description of the module. </li>
+    <li> A summary of the classes defined by the module. </li>
+    <li> A summary of the functions defined by the module. </li>
+    <li> A summary of the variables defined by the module. </li>
+    <li> A detailed description of each function defined by the
+    module. </li>
+    <li> A detailed description of each variable defined by the
+    module. </li>
+  </ul>
+  
+  <p>Each <strong>Class Documentation</strong> page contains: </p>
+  <ul>
+    <li> A class inheritance diagram. </li>
+    <li> A list of known subclasses. </li>
+    <li> A description of the class. </li>
+    <li> A summary of the methods defined by the class. </li>
+    <li> A summary of the instance variables defined by the class. </li>
+    <li> A summary of the class (static) variables defined by the
+    class. </li> 
+    <li> A detailed description of each method defined by the
+    class. </li>
+    <li> A detailed description of each instance variable defined by the
+    class. </li> 
+    <li> A detailed description of each class (static) variable defined
+    by the class. </li> 
+  </ul>
+
+<h2> Project Documentation </h2>
+
+  <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p>
+  <ul>
+    <li> The <em>module hierarchy</em> lists every package and module, with
+    modules grouped into packages.  At the top level, and within each
+    package, modules and sub-packages are listed alphabetically. </li>
+    <li> The <em>class hierarchy</em> lists every class, grouped by base
+    class.  If a class has more than one base class, then it will be
+    listed under each base class.  At the top level, and under each base
+    class, classes are listed alphabetically. </li>
+  </ul>
+  
+  <p> The <strong>Index</strong> page contains indices of terms and
+  identifiers: </p>
+  <ul>
+    <li> The <em>term index</em> lists every term indexed by any object's
+    documentation.  For each term, the index provides links to each
+    place where the term is indexed. </li>
+    <li> The <em>identifier index</em> lists the (short) name of every package,
+    module, class, method, function, variable, and parameter.  For each
+    identifier, the index provides a short description, and a link to
+    its documentation. </li>
+  </ul>
+
+<h2> The Table of Contents </h2>
+
+<p> The table of contents occupies the two frames on the left side of
+the window.  The upper-left frame displays the <em>project
+contents</em>, and the lower-left frame displays the <em>module
+contents</em>: </p>
+
+<table class="help summary" border="1" cellspacing="0" cellpadding="3">
+  <tr style="height: 30%">
+    <td align="center" style="font-size: small">
+       Project<br />Contents<hr />...</td>
+    <td align="center" style="font-size: small" rowspan="2" width="70%">
+      API<br />Documentation<br />Frame<br /><br /><br />
+    </td>
+  </tr>
+  <tr>
+    <td align="center" style="font-size: small">
+      Module<br />Contents<hr />&nbsp;<br />...<br />&nbsp;
+    </td>
+  </tr>
+</table><br />
+
+<p> The <strong>project contents frame</strong> contains a list of all packages
+and modules that are defined by the project.  Clicking on an entry
+will display its contents in the module contents frame.  Clicking on a
+special entry, labeled "Everything," will display the contents of
+the entire project. </p>
+
+<p> The <strong>module contents frame</strong> contains a list of every
+submodule, class, type, exception, function, and variable defined by a
+module or package.  Clicking on an entry will display its
+documentation in the API documentation frame.  Clicking on the name of
+the module, at the top of the frame, will display the documentation
+for the module itself. </p>
+
+<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top
+navigation bar can be used to control whether the table of contents is
+displayed or not. </p>
+
+<h2> The Navigation Bar </h2>
+
+<p> A navigation bar is located at the top and bottom of every page.
+It indicates what type of page you are currently viewing, and allows
+you to go to related pages.  The following table describes the labels
+on the navigation bar.  Note that not some labels (such as
+[Parent]) are not displayed on all pages. </p>
+
+<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
+<tr class="summary">
+  <th>Label</th>
+  <th>Highlighted when...</th>
+  <th>Links to...</th>
+</tr>
+  <tr><td valign="top"><strong>[Parent]</strong></td>
+      <td valign="top"><em>(never highlighted)</em></td>
+      <td valign="top"> the parent of the current package </td></tr>
+  <tr><td valign="top"><strong>[Package]</strong></td>
+      <td valign="top">viewing a package</td>
+      <td valign="top">the package containing the current object
+      </td></tr>
+  <tr><td valign="top"><strong>[Module]</strong></td>
+      <td valign="top">viewing a module</td>
+      <td valign="top">the module containing the current object
+      </td></tr> 
+  <tr><td valign="top"><strong>[Class]</strong></td>
+      <td valign="top">viewing a class </td>
+      <td valign="top">the class containing the current object</td></tr>
+  <tr><td valign="top"><strong>[Trees]</strong></td>
+      <td valign="top">viewing the trees page</td>
+      <td valign="top"> the trees page </td></tr>
+  <tr><td valign="top"><strong>[Index]</strong></td>
+      <td valign="top">viewing the index page</td>
+      <td valign="top"> the index page </td></tr>
+  <tr><td valign="top"><strong>[Help]</strong></td>
+      <td valign="top">viewing the help page</td>
+      <td valign="top"> the help page </td></tr>
+</table>
+
+<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below
+the top navigation bar can be used to control whether documentation
+for private objects is displayed.  Private objects are usually defined
+as objects whose (short) names begin with a single underscore, but do
+not end with an underscore.  For example, "<code>_x</code>",
+"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
+are private objects; but "<code>re.sub</code>",
+"<code>__init__</code>", and "<code>type_</code>" are not.  However,
+if a module defines the "<code>__all__</code>" variable, then its
+contents are used to decide which objects are private. </p>
+
+<p> A timestamp below the bottom navigation bar indicates when each
+page was last updated. </p>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Apr 23 08:39:41 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/identifier-index.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,741 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Identifier Index</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Indices&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="identifier-index.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table border="0" width="100%">
+<tr valign="bottom"><td>
+<h1 class="epydoc">Identifier Index</h1>
+</td><td>
+[
+ <a href="#A">A</a>
+ <a href="#B">B</a>
+ <a href="#C">C</a>
+ <a href="#D">D</a>
+  E
+ <a href="#F">F</a>
+ <a href="#G">G</a>
+ <a href="#H">H</a>
+ <a href="#I">I</a>
+  J
+  K
+ <a href="#L">L</a>
+ <a href="#M">M</a>
+  N
+ <a href="#O">O</a>
+ <a href="#P">P</a>
+  Q
+ <a href="#R">R</a>
+ <a href="#S">S</a>
+ <a href="#T">T</a>
+ <a href="#U">U</a>
+ <a href="#V">V</a>
+ <a href="#W">W</a>
+ <a href="#X">X</a>
+  Y
+  Z
+ <a href="#_">_</a>
+]
+</td></table>
+<table border="0" width="100%">
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="A">A</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ActiveRuntime-class.html">ActiveRuntime</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#add_options">add_options()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#add">add()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#add_player">add_player()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="B">B</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html#bit">bit()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2.GFElement-class.html">GFElement</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ActiveRuntime-class.html#broadcast">broadcast()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ActiveRuntime-class.html">ActiveRuntime</a>)</span></td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="C">C</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#clone">clone()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft07Mixin-class.html">ComparisonToft07Mixin</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison-module.html">viff.comparison</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft07Mixin-class.html#convert_bit_share">convert_bit_share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison.ComparisonToft07Mixin-class.html">ComparisonToft07Mixin</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.util-module.html#clone_deferred">clone_deferred()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.config-module.html">config</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime-module.html#create_runtime">create_runtime()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.comparison-module.html">comparison</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#connectionMade">connectionMade()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft05Mixin-class.html">ComparisonToft05Mixin</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison-module.html">viff.comparison</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft05Mixin-class.html#convert_bit_share">convert_bit_share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison.ComparisonToft05Mixin-class.html">ComparisonToft05Mixin</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="D">D</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.config.Player-class.html#dealer_prfs">dealer_prfs()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config.Player-class.html">Player</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#determinant">determinant()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ActiveRuntime-class.html#double_share_random">double_share_random()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ActiveRuntime-class.html">ActiveRuntime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.util-module.html#deprecation">deprecation()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#dlift">dlift()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#dprint">dprint()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="F">F</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.field-module.html">field</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.FieldElement-class.html">FieldElement</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#find_prime">find_prime()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field2-module.html">field2</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field2.FieldElement-class.html">FieldElement</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2-module.html">viff.field2</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="G">G</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime-module.html#gather_shares">gather_shares()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ActiveRuntime-class.html#get_triple">get_triple()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ActiveRuntime-class.html">ActiveRuntime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft05Mixin-class.html#greater_than_equal">greater_than_equal()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison.ComparisonToft05Mixin-class.html">ComparisonToft05Mixin</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.config-module.html#generate_configs">generate_configs()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config-module.html">viff.config</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field-module.html#GF">GF()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal">greater_than_equal()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison.ComparisonToft07Mixin-class.html">ComparisonToft07Mixin</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.prss-module.html#generate_subsets">generate_subsets()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss-module.html">viff.prss</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html">GF256</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_online">greater_than_equal_online()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison.ComparisonToft07Mixin-class.html">ComparisonToft07Mixin</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ActiveRuntime-class.html#generate_triples">generate_triples()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ActiveRuntime-class.html">ActiveRuntime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html">GFElement</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2-module.html">viff.field2</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_preproc">greater_than_equal_preproc()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison.ComparisonToft07Mixin-class.html">ComparisonToft07Mixin</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="H">H</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.matrix-module.html#hyper">hyper()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix-module.html">viff.matrix</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchangerFactory-class.html#identify_peer">identify_peer()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchangerFactory-class.html">ShareExchangerFactory</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime-module.html#increment_pc">increment_pc()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="L">L</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.config-module.html#load_config">load_config()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config-module.html">viff.config</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#loseConnection">loseConnection()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="M">M</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.matrix-module.html">matrix</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#modulus">modulus</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#mul">mul()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html">Matrix</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix-module.html">viff.matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ActiveRuntime-class.html#mul">mul()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ActiveRuntime-class.html">ActiveRuntime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="O">O</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#open">open()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="P">P</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.config.Player-class.html">Player</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config-module.html">viff.config</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.prss.PRF-class.html">PRF</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss-module.html">viff.prss</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.prss-module.html#prss">prss()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss-module.html">viff.prss</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#preprocess">preprocess()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.config.Player-class.html#prfs">prfs()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config.Player-class.html">Player</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#prss_share">prss_share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime-module.html#preprocess">preprocess()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.prss-module.html">prss</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#prss_share_random">prss_share_random()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="R">R</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.util-module.html#rand">rand</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime-module.html">runtime</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.shamir-module.html#recombine">recombine()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.shamir-module.html">viff.shamir</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html">Runtime</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="S">S</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#schedule_callback">schedule_callback()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.shamir-module.html#share">share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.shamir-module.html">viff.shamir</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html#sqrt">sqrt()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2.GFElement-class.html">GFElement</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#sendData">sendData()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#stringReceived">stringReceived()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#sendShare">sendShare()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchangerFactory-class.html">ShareExchangerFactory</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#sub">sub()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.shamir-module.html">shamir</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareList-class.html">ShareList</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#synchronize">synchronize()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#shamir_share">shamir_share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#shutdown">shutdown()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html">Share</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime-module.html">viff.runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ActiveRuntime-class.html#single_share_random">single_share_random()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ActiveRuntime-class.html">ActiveRuntime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="T">T</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.comparison.Toft05Runtime-class.html">Toft05Runtime</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison-module.html">viff.comparison</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.Toft07Runtime-class.html">Toft07Runtime</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison-module.html">viff.comparison</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#transpose">transpose()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="U">U</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.util-module.html">util</a><br />
+<span class="index-where">(in&nbsp;<a href="viff-module.html">viff</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="V">V</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.shamir-module.html#verify_sharing">verify_sharing()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.shamir-module.html">viff.shamir</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff-module.html">viff</a></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="W">W</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#wait_for">wait_for()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#wrapper">wrapper()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="X">X</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#xor">xor()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="_">_</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__add__">__add__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__le__">__le__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2.GFElement-class.html">GFElement</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__add__">__add__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__lt__">__lt__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__add__">__add__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__mul__">__mul__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html#__sub__">__sub__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2.GFElement-class.html">GFElement</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.prss.PRF-class.html#__call__">__call__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss.PRF-class.html">PRF</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__mul__">__mul__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__sub__">__sub__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html#__cmp__">__cmp__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2.GFElement-class.html">GFElement</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__mul__">__mul__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html#__truediv__">__truediv__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2.GFElement-class.html">GFElement</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__div__">__div__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__neg__">__neg__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__xor__">__xor__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__eq__">__eq__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html#__neg__">__neg__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2.GFElement-class.html">GFElement</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ActiveRuntime-class.html#_broadcast">_broadcast()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ActiveRuntime-class.html">ActiveRuntime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html#__eq__">__eq__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2.GFElement-class.html">GFElement</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__nonzero__">__nonzero__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareList-class.html#_callback_fired">_callback_fired()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareList-class.html">ShareList</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__ge__">__ge__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html#__nonzero__">__nonzero__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2.GFElement-class.html">GFElement</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft05Mixin-class.html#_diamond">_diamond()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison.ComparisonToft05Mixin-class.html">ComparisonToft05Mixin</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__getitem__">__getitem__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__pow__">__pow__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#_exchange_shares">_exchange_shares()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__gt__">__gt__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html#__pow__">__pow__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2.GFElement-class.html">GFElement</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field-module.html#_exp_table">_exp_table</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__hash__">__hash__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html#__radd__">__radd__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2.GFElement-class.html">GFElement</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#_expect_data">_expect_data()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html#__hash__">__hash__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2.GFElement-class.html">GFElement</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__radd__">__radd__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#_expect_share">_expect_share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.config.Player-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config.Player-class.html">Player</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__radd__">__radd__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field-module.html#_field_cache">_field_cache</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__rdiv__">__rdiv__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft05Mixin-class.html#_finish_greater_than_equal">_finish_greater_than_equal()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison.ComparisonToft05Mixin-class.html">ComparisonToft05Mixin</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2.GFElement-class.html">GFElement</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.config.Player-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.config.Player-class.html">Player</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.comparison.ComparisonToft07Mixin-class.html#_finish_greater_than_equal">_finish_greater_than_equal()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.comparison.ComparisonToft07Mixin-class.html">ComparisonToft07Mixin</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field-module.html#_generate_tables">_generate_tables()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.prss.PRF-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.prss.PRF-class.html">PRF</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2.GFElement-class.html">GFElement</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#_init_set">_init_set()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ActiveRuntime-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ActiveRuntime-class.html">ActiveRuntime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html#__rmul__">__rmul__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2.GFElement-class.html">GFElement</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#_init_zeros">_init_zeros()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.BasicRuntime-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.BasicRuntime-class.html">BasicRuntime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__rmul__">__rmul__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field-module.html#_inv_table">_inv_table</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__rmul__">__rmul__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field-module.html#_log_table">_log_table</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field-module.html">viff.field</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html#__rsub__">__rsub__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2.GFElement-class.html">GFElement</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.shamir-module.html#_recombination_vectors">_recombination_vectors</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.shamir-module.html">viff.shamir</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchanger-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchanger-class.html">ShareExchanger</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__rsub__">__rsub__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#_recombine">_recombine()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareExchangerFactory-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareExchangerFactory-class.html">ShareExchangerFactory</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html#__rtruediv__">__rtruediv__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2.GFElement-class.html">GFElement</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.util-module.html#_seed">_seed</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.util-module.html">viff.util</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.runtime.ShareList-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.ShareList-class.html">ShareList</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Share-class.html#__rxor__">__rxor__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Share-class.html">Share</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.runtime.Runtime-class.html#_shamir_share">_shamir_share()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.runtime.Runtime-class.html">Runtime</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__invert__">__invert__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.matrix.Matrix-class.html#__setitem__">__setitem__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.matrix.Matrix-class.html">Matrix</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="viff.field2.GFElement-class.html#__invert__">__invert__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field2.GFElement-class.html">GFElement</a>)</span></td>
+<td width="33%" class="link-index"><a href="viff.field.GF256-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in&nbsp;<a href="viff.field.GF256-class.html">GF256</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+</table>
+</td></tr>
+</table>
+<br /><br /><!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Indices&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Apr 23 08:39:41 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/index.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> VIFF: Virtual Ideal Functionality Framework </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="viff-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/module-tree.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Module Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">&nbsp;</td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="module-tree.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Module Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink"><a href="viff-module.html">viff</a></strong>: <em class="summary">Virtual Ideal Functionality Framework.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="viff.comparison-module.html">viff.comparison</a></strong>: <em class="summary">Comparison protocols.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.config-module.html">viff.config</a></strong>: <em class="summary">Functions for loading and saving player configurations.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.field-module.html">viff.field</a></strong>: <em class="summary">Modeling of Galois (finite) fields.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.field2-module.html">viff.field2</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="viff.matrix-module.html">viff.matrix</a></strong>: <em class="summary">Matrix operations.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.prss-module.html">viff.prss</a></strong>: <em class="summary">Methods for pseudo-random secret sharing.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.runtime-module.html">viff.runtime</a></strong>: <em class="summary">VIFF runtime.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.shamir-module.html">viff.shamir</a></strong>: <em class="summary">Shamir secret sharing and recombination.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.util-module.html">viff.util</a></strong>: <em class="summary">Miscellaneous utility functions.</em>    </li>
+    </ul>
+    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Apr 23 08:39:41 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/redirect.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,38 @@
+<html><head><title>Epydoc Redirect Page</title>
+<meta http-equiv="cache-control" content="no-cache" />
+<meta http-equiv="expires" content="0" />
+<meta http-equiv="pragma" content="no-cache" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+<!--
+var pages = ["viff.comparison.ComparisonToft05Mixin-c", "viff.comparison.ComparisonToft07Mixin-c", "viff.runtime.ShareExchangerFactory-c", "viff.comparison.Toft05Runtime-c", "viff.comparison.Toft07Runtime-c", "viff.runtime.ShareExchanger-c", "viff.runtime.ActiveRuntime-c", "viff.runtime.BasicRuntime-c", "viff.field2.FieldElement-c", "viff.field.FieldElement-c", "viff.runtime.ShareList-c", "viff.field2.GFElement-c", "viff.runtime.Runtime-c", "viff.config.Player-c", "viff.matrix.Matrix-c", "viff.runtime.Share-c", "viff.field.GF256-c", "viff.comparison-m", "viff.prss.PRF-c", "viff.runtime-m", "viff.config-m", "viff.field2-m", "viff.matrix-m", "viff.shamir-m", "viff.field-m", "viff.prss-m", "viff.util-m", "viff-m"];
+var dottedName = get_anchor();
+if (dottedName) {
+    var target = redirect_url(dottedName);
+    if (target) window.location.replace(target);
+}
+// -->
+</script>
+
+<h3>Epydoc Auto-redirect page</h3>
+
+<p>When javascript is enabled, this page will redirect URLs of
+the form <tt>redirect.html#<i>dotted.name</i></tt> to the
+documentation for the object with the given fully-qualified
+dotted name.</p>
+<p><a id="message"> &nbsp; </a></p>
+
+<script type="text/javascript">
+<!--
+if (dottedName) {
+    var msg = document.getElementById("message");
+    msg.innerHTML = "No documentation found for <tt>"+
+                    dottedName+"</tt>";
+}
+// -->
+</script>
+
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/toc-everything.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Everything</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Everything</h1>
+<hr />
+  <h2 class="toc">All Classes</h2>
+    <a target="mainFrame" href="viff.comparison.ComparisonToft05Mixin-class.html"
+     >viff.comparison.ComparisonToft05Mixin</a><br />    <a target="mainFrame" href="viff.comparison.ComparisonToft07Mixin-class.html"
+     >viff.comparison.ComparisonToft07Mixin</a><br />    <a target="mainFrame" href="viff.comparison.Toft05Runtime-class.html"
+     >viff.comparison.Toft05Runtime</a><br />    <a target="mainFrame" href="viff.comparison.Toft07Runtime-class.html"
+     >viff.comparison.Toft07Runtime</a><br />    <a target="mainFrame" href="viff.config.Player-class.html"
+     >viff.config.Player</a><br />    <a target="mainFrame" href="viff.field.FieldElement-class.html"
+     >viff.field.FieldElement</a><br />    <a target="mainFrame" href="viff.field.GF256-class.html"
+     >viff.field.GF256</a><br />    <a target="mainFrame" href="viff.field2.FieldElement-class.html"
+     >viff.field2.FieldElement</a><br />    <a target="mainFrame" href="viff.field2.GFElement-class.html"
+     >viff.field2.GFElement</a><br />    <a target="mainFrame" href="viff.matrix.Matrix-class.html"
+     >viff.matrix.Matrix</a><br />    <a target="mainFrame" href="viff.prss.PRF-class.html"
+     >viff.prss.PRF</a><br />    <a target="mainFrame" href="viff.runtime.ActiveRuntime-class.html"
+     >viff.runtime.ActiveRuntime</a><br />    <a target="mainFrame" href="viff.runtime.BasicRuntime-class.html"
+     >viff.runtime.BasicRuntime</a><br />    <a target="mainFrame" href="viff.runtime.Runtime-class.html"
+     >viff.runtime.Runtime</a><br />    <a target="mainFrame" href="viff.runtime.Share-class.html"
+     >viff.runtime.Share</a><br />    <a target="mainFrame" href="viff.runtime.ShareExchanger-class.html"
+     >viff.runtime.ShareExchanger</a><br />    <a target="mainFrame" href="viff.runtime.ShareExchangerFactory-class.html"
+     >viff.runtime.ShareExchangerFactory</a><br />    <a target="mainFrame" href="viff.runtime.ShareList-class.html"
+     >viff.runtime.ShareList</a><br />  <h2 class="toc">All Functions</h2>
+    <a target="mainFrame" href="viff.config-module.html#generate_configs"
+     >viff.config.generate_configs</a><br />    <a target="mainFrame" href="viff.config-module.html#load_config"
+     >viff.config.load_config</a><br />    <a target="mainFrame" href="viff.field-module.html#GF"
+     >viff.field.GF</a><br />  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_generate_tables"
+     >viff.field._generate_tables</a><br />  </div>
+    <a target="mainFrame" href="viff.matrix-module.html#hyper"
+     >viff.matrix.hyper</a><br />    <a target="mainFrame" href="viff.prss-module.html#generate_subsets"
+     >viff.prss.generate_subsets</a><br />    <a target="mainFrame" href="viff.prss-module.html#prss"
+     >viff.prss.prss</a><br />    <a target="mainFrame" href="viff.runtime-module.html#create_runtime"
+     >viff.runtime.create_runtime</a><br />    <a target="mainFrame" href="viff.runtime-module.html#gather_shares"
+     >viff.runtime.gather_shares</a><br />    <a target="mainFrame" href="viff.runtime-module.html#increment_pc"
+     >viff.runtime.increment_pc</a><br />    <a target="mainFrame" href="viff.runtime-module.html#preprocess"
+     >viff.runtime.preprocess</a><br />    <a target="mainFrame" href="viff.shamir-module.html#recombine"
+     >viff.shamir.recombine</a><br />    <a target="mainFrame" href="viff.shamir-module.html#share"
+     >viff.shamir.share</a><br />    <a target="mainFrame" href="viff.shamir-module.html#verify_sharing"
+     >viff.shamir.verify_sharing</a><br />    <a target="mainFrame" href="viff.util-module.html#clone_deferred"
+     >viff.util.clone_deferred</a><br />    <a target="mainFrame" href="viff.util-module.html#deprecation"
+     >viff.util.deprecation</a><br />    <a target="mainFrame" href="viff.util-module.html#dlift"
+     >viff.util.dlift</a><br />    <a target="mainFrame" href="viff.util-module.html#dprint"
+     >viff.util.dprint</a><br />    <a target="mainFrame" href="viff.util-module.html#find_prime"
+     >viff.util.find_prime</a><br />    <a target="mainFrame" href="viff.util-module.html#wrapper"
+     >viff.util.wrapper</a><br />  <h2 class="toc">All Variables</h2>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_exp_table"
+     >viff.field._exp_table</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_field_cache"
+     >viff.field._field_cache</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_inv_table"
+     >viff.field._inv_table</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_log_table"
+     >viff.field._log_table</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.shamir-module.html#_recombination_vectors"
+     >viff.shamir._recombination_vectors</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.util-module.html#_seed"
+     >viff.util._seed</a><br />  </div>
+    <a target="mainFrame" href="viff.util-module.html#rand"
+     >viff.util.rand</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/toc-viff-module.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module viff</h1>
+<hr />
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/toc-viff.comparison-module.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>comparison</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module comparison</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.comparison.ComparisonToft05Mixin-class.html"
+     >ComparisonToft05Mixin</a><br />    <a target="mainFrame" href="viff.comparison.ComparisonToft07Mixin-class.html"
+     >ComparisonToft07Mixin</a><br />    <a target="mainFrame" href="viff.comparison.Toft05Runtime-class.html"
+     >Toft05Runtime</a><br />    <a target="mainFrame" href="viff.comparison.Toft07Runtime-class.html"
+     >Toft07Runtime</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/toc-viff.config-module.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>config</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module config</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.config.Player-class.html"
+     >Player</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.config-module.html#generate_configs"
+     >generate_configs</a><br />    <a target="mainFrame" href="viff.config-module.html#load_config"
+     >load_config</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/toc-viff.field-module.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>field</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module field</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.field.FieldElement-class.html"
+     >FieldElement</a><br />    <a target="mainFrame" href="viff.field.GF256-class.html"
+     >GF256</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.field-module.html#GF"
+     >GF</a><br />  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_generate_tables"
+     >_generate_tables</a><br />  </div>
+  <h2 class="toc">Variables</h2>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_exp_table"
+     >_exp_table</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_field_cache"
+     >_field_cache</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_inv_table"
+     >_inv_table</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="viff.field-module.html#_log_table"
+     >_log_table</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/toc-viff.field2-module.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>field2</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module field2</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.field2.FieldElement-class.html"
+     >FieldElement</a><br />    <a target="mainFrame" href="viff.field2.GFElement-class.html"
+     >GFElement</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/toc-viff.matrix-module.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>matrix</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module matrix</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.matrix.Matrix-class.html"
+     >Matrix</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.matrix-module.html#hyper"
+     >hyper</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/toc-viff.prss-module.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>prss</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module prss</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.prss.PRF-class.html"
+     >PRF</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.prss-module.html#generate_subsets"
+     >generate_subsets</a><br />    <a target="mainFrame" href="viff.prss-module.html#prss"
+     >prss</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/toc-viff.runtime-module.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>runtime</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module runtime</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="viff.runtime.ActiveRuntime-class.html"
+     >ActiveRuntime</a><br />    <a target="mainFrame" href="viff.runtime.BasicRuntime-class.html"
+     >BasicRuntime</a><br />    <a target="mainFrame" href="viff.runtime.Runtime-class.html"
+     >Runtime</a><br />    <a target="mainFrame" href="viff.runtime.Share-class.html"
+     >Share</a><br />    <a target="mainFrame" href="viff.runtime.ShareExchanger-class.html"
+     >ShareExchanger</a><br />    <a target="mainFrame" href="viff.runtime.ShareExchangerFactory-class.html"
+     >ShareExchangerFactory</a><br />    <a target="mainFrame" href="viff.runtime.ShareList-class.html"
+     >ShareList</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.runtime-module.html#create_runtime"
+     >create_runtime</a><br />    <a target="mainFrame" href="viff.runtime-module.html#gather_shares"
+     >gather_shares</a><br />    <a target="mainFrame" href="viff.runtime-module.html#increment_pc"
+     >increment_pc</a><br />    <a target="mainFrame" href="viff.runtime-module.html#preprocess"
+     >preprocess</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/toc-viff.shamir-module.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>shamir</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module shamir</h1>
+<hr />
+  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.shamir-module.html#recombine"
+     >recombine</a><br />    <a target="mainFrame" href="viff.shamir-module.html#share"
+     >share</a><br />    <a target="mainFrame" href="viff.shamir-module.html#verify_sharing"
+     >verify_sharing</a><br />  <h2 class="toc">Variables</h2>
+  <div class="private">
+    <a target="mainFrame" href="viff.shamir-module.html#_recombination_vectors"
+     >_recombination_vectors</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/toc-viff.util-module.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>util</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module util</h1>
+<hr />
+  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="viff.util-module.html#clone_deferred"
+     >clone_deferred</a><br />    <a target="mainFrame" href="viff.util-module.html#deprecation"
+     >deprecation</a><br />    <a target="mainFrame" href="viff.util-module.html#dlift"
+     >dlift</a><br />    <a target="mainFrame" href="viff.util-module.html#dprint"
+     >dprint</a><br />    <a target="mainFrame" href="viff.util-module.html#find_prime"
+     >find_prime</a><br />    <a target="mainFrame" href="viff.util-module.html#wrapper"
+     >wrapper</a><br />  <h2 class="toc">Variables</h2>
+  <div class="private">
+    <a target="mainFrame" href="viff.util-module.html#_seed"
+     >_seed</a><br />  </div>
+    <a target="mainFrame" href="viff.util-module.html#rand"
+     >rand</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/toc.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Table of Contents</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Table&nbsp;of&nbsp;Contents</h1>
+<hr />
+  <a target="moduleFrame" href="toc-everything.html">Everything</a>
+  <br />
+  <h2 class="toc">Modules</h2>
+    <a target="moduleFrame" href="toc-viff-module.html"
+     onclick="setFrame('toc-viff-module.html','viff-module.html');"     >viff</a><br />    <a target="moduleFrame" href="toc-viff.comparison-module.html"
+     onclick="setFrame('toc-viff.comparison-module.html','viff.comparison-module.html');"     >viff.comparison</a><br />    <a target="moduleFrame" href="toc-viff.config-module.html"
+     onclick="setFrame('toc-viff.config-module.html','viff.config-module.html');"     >viff.config</a><br />    <a target="moduleFrame" href="toc-viff.field-module.html"
+     onclick="setFrame('toc-viff.field-module.html','viff.field-module.html');"     >viff.field</a><br />    <a target="moduleFrame" href="toc-viff.field2-module.html"
+     onclick="setFrame('toc-viff.field2-module.html','viff.field2-module.html');"     >viff.field2</a><br />    <a target="moduleFrame" href="toc-viff.matrix-module.html"
+     onclick="setFrame('toc-viff.matrix-module.html','viff.matrix-module.html');"     >viff.matrix</a><br />    <a target="moduleFrame" href="toc-viff.prss-module.html"
+     onclick="setFrame('toc-viff.prss-module.html','viff.prss-module.html');"     >viff.prss</a><br />    <a target="moduleFrame" href="toc-viff.runtime-module.html"
+     onclick="setFrame('toc-viff.runtime-module.html','viff.runtime-module.html');"     >viff.runtime</a><br />    <a target="moduleFrame" href="toc-viff.shamir-module.html"
+     onclick="setFrame('toc-viff.shamir-module.html','viff.shamir-module.html');"     >viff.shamir</a><br />    <a target="moduleFrame" href="toc-viff.util-module.html"
+     onclick="setFrame('toc-viff.util-module.html','viff.util-module.html');"     >viff.util</a><br /><hr />
+  <span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/viff-module.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Package&nbsp;viff
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff-module.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PACKAGE DESCRIPTION ==================== -->
+<h1 class="epydoc">Package viff</h1><p class="nomargin-top"><span class="codelink"><a href="viff-pysrc.html">source&nbsp;code</a></span></p>
+<p>Virtual Ideal Functionality Framework.</p>
+  <p>VIFF is a Python framework for writing multi-party computations (MPC) 
+  in an easy, efficient, and secure way.</p>
+  <h1 class="heading">Overview</h1>
+    <p>VIFF allows you to write a program which will interact with other 
+    programs in order to execute a joint computation. This is called a 
+    multi-party computation, MPC for short.</p>
+    <p>The programs will implement what we call a virtual ideal 
+    functionality (IF). The idea is that the behavior of the programs 
+    should be indistinguishable from the behavior of programs interacting 
+    with a so-called ideal functionality. An ideal functionality is a 
+    player that cannot be corrupted, also known as a trusted third party 
+    (TTP).</p>
+    <p>Interacting with an IF is easy: all players give their inputs to the
+    IF, which computes the results. The results are then distributed to the
+    correct players. The inputs and the results are sent over secure 
+    channels, and since the IF cannot be corrupted, this ideal protocol 
+    must be secure.</p>
+    <p>In the real world there is no IF, but VIFF allows you to implement a
+    virtual ideal functionality. The behavior of a bunch of programs using 
+    VIFF is indistinguishable from program running in the ideal world. It 
+    is indistinguishable in the sense that everything that can happen in 
+    the real world protocol could happen in the ideal world too. And since 
+    no attacks can occur in the ideal world, no attacks can occur in the 
+    real world as well. Such a multi-party computation (MPC) is called a 
+    secure multi-party computation (SMPC).</p>
+    <h2 class="heading">Security Assumptions</h2>
+      <p>Please note that like all cryptographic systems, VIFF is only 
+      secure as long as certain assumptions are fulfilled. These 
+      assumptions include:</p>
+      <ul>
+        <li>
+          The adversary can only corrupt up to a certain threshold of the 
+          total number of players. The threshold will normally be 1/2 of 
+          the players, so for three players, at most one player may be 
+          corrupted (there must be an honest majority).
+        </li>
+        <li>
+          The adversary is computationally bounded. The protocols used by 
+          VIFF rely on certain computational hardness assumptions, and 
+          therefore only polynomial time adversaries are allowed.
+        </li>
+        <li>
+          The adversary is passive. Being passive means that the adversary 
+          only monitors the network traffic, but still follows the 
+          protocol. We plan to add support for active (Byzantine) 
+          adversaries in a future version.
+        </li>
+      </ul>
+      <p>The precise assumptions for each protocol will eventually be 
+      included in the documentation for the corresponding method, but this 
+      has not yet been done.</p>
+  <h1 class="heading">Architecture</h1>
+    <p>VIFF consists of several modules. The <a 
+    href="viff.runtime-module.html" class="link">runtime</a> module 
+    contains the <a href="viff.runtime.Runtime-class.html" 
+    class="link">Runtime</a> and <a href="viff.runtime.Share-class.html" 
+    class="link">Share</a> classes, in which the main functionality is 
+    implemented. The <a href="viff.field-module.html" 
+    class="link">field</a> module contains implementations of finite fields
+    --- these are the values inside the shares. Other modules provide 
+    support functions.</p>
+    <h2 class="heading">Layers</h2>
+      <p>The main functionality in VIFF is implemented in the <a 
+      href="viff.runtime.Runtime-class.html" class="link">Runtime</a> 
+      class. This class offers methods to do addition, multiplication, etc.
+      These methods operate on <a href="viff.runtime.Share-class.html" 
+      class="link">Share</a> instances.</p>
+      <p>Shares hold either <a href="viff.field-module.html#GF" 
+      class="link">field.GF</a> or <a href="viff.field.GF256-class.html" 
+      class="link">GF256</a> elements and are created from the 
+      <code>shamir_share</code> or <code>prss_share</code> Runtime methods.
+      Shares overload the standard arithmetic operators, so you can write 
+      <code>a + b - c * d</code> with four shares, and it will be 
+      translated correctly into the appropriate method calls on the Runtime
+      instance associated with the shares.</p>
+      <p>A field element contain the concrete value on which we do 
+      calculations. This is just a normal Python (long) integer. The value 
+      is wrapped in an object that will keep track of doing modulo 
+      reductions as appropriate.</p>
+      <p>So in a nutshell, VIFF has these layers:</p>
+      <ul>
+        <li>
+          Top-level layer for application programs: There you manipulate 
+          Python integers or <a href="viff.runtime.Share-class.html" 
+          class="link">Share</a> instances.
+        </li>
+        <li>
+          Runtime layer: The runtime deals with Python integers or shares.
+        </li>
+        <li>
+          Field elements: Deals with arithmetic over Python integers, but 
+          with modulo reductions as needed.
+        </li>
+      </ul>
+  <h1 class="heading">Getting into VIFF</h1>
+    <p>As explained above, the main functionality in VIFF is the <a 
+    href="viff.runtime.Runtime-class.html" class="link">Runtime</a> class, 
+    so please start there. Also, be sure to checkout the example 
+    applications distributed in the <code>apps</code> directory.</p>
+
+<hr />
+<div class="fields">      <p><strong>Author:</strong>
+        <a href="mailto:viff-devel@viff.dk" target="_top">VIFF Development 
+        Team</a>
+      </p>
+      <p><strong>See Also:</strong>
+        <a href="http://viff.dk/" target="_top">http://viff.dk/</a>
+      </p>
+      <p><strong>Version:</strong>
+        0.5rc1
+      </p>
+      <p><strong>License:</strong>
+        GNU GPL
+      </p>
+</div><!-- ==================== SUBMODULES ==================== -->
+<a name="section-Submodules"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Submodules</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Submodules"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr><td class="summary">
+  <ul class="nomargin">
+    <li> <strong class="uidlink"><a href="viff.comparison-module.html">viff.comparison</a></strong>: <em class="summary">Comparison protocols.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.config-module.html">viff.config</a></strong>: <em class="summary">Functions for loading and saving player configurations.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.field-module.html">viff.field</a></strong>: <em class="summary">Modeling of Galois (finite) fields.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.field2-module.html">viff.field2</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="viff.matrix-module.html">viff.matrix</a></strong>: <em class="summary">Matrix operations.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.prss-module.html">viff.prss</a></strong>: <em class="summary">Methods for pseudo-random secret sharing.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.runtime-module.html">viff.runtime</a></strong>: <em class="summary">VIFF runtime.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.shamir-module.html">viff.shamir</a></strong>: <em class="summary">Shamir secret sharing and recombination.</em>    </li>
+    <li> <strong class="uidlink"><a href="viff.util-module.html">viff.util</a></strong>: <em class="summary">Miscellaneous utility functions.</em>    </li>
+  </ul></td></tr>
+</table>
+
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Apr 23 08:39:41 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/viff-pysrc.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Package&nbsp;viff
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff-pysrc.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="viff-module.html">Package viff</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># Copyright 2007, 2008 VIFF Development Team.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of VIFF, the Virtual Ideal Functionality Framework.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># VIFF is free software: you can redistribute it and/or modify it</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># under the terms of the GNU Lesser General Public License (LGPL) as</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># published by the Free Software Foundation, either version 3 of the</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># License, or (at your option) any later version.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># VIFF is distributed in the hope that it will be useful, but WITHOUT</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># ANY WARRANTY; without even the implied warranty of MERCHANTABILITY</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Public License for more details.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># License along with VIFF. If not, see &lt;http://www.gnu.org/licenses/&gt;.</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring">Virtual Ideal Functionality Framework.</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring">VIFF is a Python framework for writing multi-party computations (MPC)</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring">in an easy, efficient, and secure way.</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">Overview</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring">========</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring">VIFF allows you to write a program which will interact with other</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring">programs in order to execute a joint computation. This is called a</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring">multi-party computation, MPC for short.</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring">The programs will implement what we call a virtual ideal functionality</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring">(IF). The idea is that the behavior of the programs should be</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-docstring">indistinguishable from the behavior of programs interacting with a</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">so-called ideal functionality. An ideal functionality is a player that</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-docstring">cannot be corrupted, also known as a trusted third party (TTP).</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-docstring">Interacting with an IF is easy: all players give their inputs to the</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-docstring">IF, which computes the results. The results are then distributed to</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-docstring">the correct players. The inputs and the results are sent over secure</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring">channels, and since the IF cannot be corrupted, this ideal protocol</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">must be secure.</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">In the real world there is no IF, but VIFF allows you to implement a</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring">virtual ideal functionality. The behavior of a bunch of programs using</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring">VIFF is indistinguishable from program running in the ideal world. It</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">is indistinguishable in the sense that everything that can happen in</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring">the real world protocol could happen in the ideal world too. And since</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">no attacks can occur in the ideal world, no attacks can occur in the</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring">real world as well. Such a multi-party computation (MPC) is called a</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring">secure multi-party computation (SMPC).</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">Security Assumptions</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring">--------------------</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">Please note that like all cryptographic systems, VIFF is only secure</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">as long as certain assumptions are fulfilled. These assumptions</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">include:</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">  - The adversary can only corrupt up to a certain threshold of the</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">    total number of players. The threshold will normally be 1/2 of the</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring">    players, so for three players, at most one player may be</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">    corrupted (there must be an honest majority).</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-docstring">  - The adversary is computationally bounded. The protocols used by</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-docstring">    VIFF rely on certain computational hardness assumptions, and</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-docstring">    therefore only polynomial time adversaries are allowed.</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring">  - The adversary is passive. Being passive means that the adversary</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring">    only monitors the network traffic, but still follows the protocol.</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring">    We plan to add support for active (Byzantine) adversaries in a</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-docstring">    future version.</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring">The precise assumptions for each protocol will eventually be included</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring">in the documentation for the corresponding method, but this has not</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">yet been done.</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring">Architecture</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring">============</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">VIFF consists of several modules. The L{runtime} module contains the</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring">L{Runtime} and L{Share} classes, in which the main functionality is</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring">implemented. The L{field} module contains implementations of finite</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring">fields --- these are the values inside the shares. Other modules</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring">provide support functions.</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-docstring">Layers</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-docstring">------</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">The main functionality in VIFF is implemented in the L{Runtime} class.</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring">This class offers methods to do addition, multiplication, etc. These</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-docstring">methods operate on L{Share} instances.</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring">Shares hold either L{field.GF} or L{GF256} elements and are created</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring">from the C{shamir_share} or C{prss_share} Runtime methods. Shares</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring">overload the standard arithmetic operators, so you can write C{a + b -</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-docstring">c * d} with four shares, and it will be translated correctly into the</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring">appropriate method calls on the Runtime instance associated with the</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring">shares.</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring">A field element contain the concrete value on which we do</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring">calculations. This is just a normal Python (long) integer. The value</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring">is wrapped in an object that will keep track of doing modulo</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">reductions as appropriate.</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring">So in a nutshell, VIFF has these layers:</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-docstring">  - Top-level layer for application programs: There you manipulate</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-docstring">    Python integers or L{Share} instances.</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-docstring">  - Runtime layer: The runtime deals with Python integers or shares.</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"><tt class="py-docstring">  - Field elements: Deals with arithmetic over Python integers, but</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-docstring">    with modulo reductions as needed.</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-docstring">Getting into VIFF</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-docstring">=================</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring">As explained above, the main functionality in VIFF is the L{Runtime}</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-docstring">class, so please start there. Also, be sure to checkout the example</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-docstring">applications distributed in the C{apps} directory.</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-docstring">@authors: U{VIFF Development Team &lt;mailto:viff-devel@viff.dk&gt;}</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-docstring">@see: U{http://viff.dk/}</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-name">__version__</tt> <tt class="py-op">=</tt> <tt class="py-string">'0.5rc1'</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-name">__license__</tt> <tt class="py-op">=</tt> <tt class="py-string">'GNU GPL'</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Apr 23 08:39:43 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/viff.comparison-module.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.comparison</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        Module&nbsp;comparison
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.comparison-module.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module comparison</h1><p class="nomargin-top"><span class="codelink"><a href="viff.comparison-pysrc.html">source&nbsp;code</a></span></p>
+<p>Comparison protocols.</p>
+  <p>The mixin classes defined here provide a 
+  <code>greater_than_equal</code> method to the <a 
+  href="viff.runtime.Runtime-class.html" class="link">Runtime</a> they are 
+  mixed with.</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="viff.comparison.ComparisonToft05Mixin-class.html" class="summary-name">ComparisonToft05Mixin</a><br />
+      Comparison by Tomas Toft, 2005.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="viff.comparison.Toft05Runtime-class.html" class="summary-name">Toft05Runtime</a><br />
+      Default mix of <a 
+        href="viff.comparison.ComparisonToft05Mixin-class.html" 
+        class="link">ComparisonToft05Mixin</a> and <a 
+        href="viff.runtime.Runtime-class.html" class="link">Runtime</a>.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="viff.comparison.ComparisonToft07Mixin-class.html" class="summary-name">ComparisonToft07Mixin</a><br />
+      Efficient comparison by Tomas Toft 2007.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="viff.comparison.Toft07Runtime-class.html" class="summary-name">Toft07Runtime</a><br />
+      Default mix of <a 
+        href="viff.comparison.ComparisonToft07Mixin-class.html" 
+        class="link">ComparisonToft07Mixin</a> and <a 
+        href="viff.runtime.Runtime-class.html" class="link">Runtime</a>.
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Apr 23 08:39:41 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/viff.comparison-pysrc.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,466 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.comparison</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        Module&nbsp;comparison
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.comparison-pysrc.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="viff.comparison-module.html">Module viff.comparison</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># Copyright 2008 VIFF Development Team.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of VIFF, the Virtual Ideal Functionality Framework.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># VIFF is free software: you can redistribute it and/or modify it</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># under the terms of the GNU Lesser General Public License (LGPL) as</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># published by the Free Software Foundation, either version 3 of the</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># License, or (at your option) any later version.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># VIFF is distributed in the hope that it will be useful, but WITHOUT</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># ANY WARRANTY; without even the implied warranty of MERCHANTABILITY</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Public License for more details.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># License along with VIFF. If not, see &lt;http://www.gnu.org/licenses/&gt;.</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring">"""Comparison protocols.</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">The mixin classes defined here provide a C{greater_than_equal} method</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring">to the L{Runtime} they are mixed with.</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">math</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package viff=viff-module.html"><a title="viff" class="py-name" href="#" onclick="return doclink('link-0', 'viff', 'link-0');">viff</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module viff.util=viff.util-module.html"><a title="viff.util" class="py-name" href="#" onclick="return doclink('link-1', 'util', 'link-1');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Variable viff.util.rand=viff.util-module.html#rand"><a title="viff.util.rand" class="py-name" href="#" onclick="return doclink('link-2', 'rand', 'link-2');">rand</a></tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-3" class="py-name"><a title="viff" class="py-name" href="#" onclick="return doclink('link-3', 'viff', 'link-0');">viff</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module viff.runtime=viff.runtime-module.html"><a title="viff.runtime" class="py-name" href="#" onclick="return doclink('link-4', 'runtime', 'link-4');">runtime</a></tt> <tt class="py-keyword">import</tt> <tt id="link-5" class="py-name" targets="Class viff.runtime.Runtime=viff.runtime.Runtime-class.html"><a title="viff.runtime.Runtime" class="py-name" href="#" onclick="return doclink('link-5', 'Runtime', 'link-5');">Runtime</a></tt><tt class="py-op">,</tt> <tt id="link-6" class="py-name" targets="Class viff.runtime.Share=viff.runtime.Share-class.html"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-6', 'Share', 'link-6');">Share</a></tt><tt class="py-op">,</tt> <tt id="link-7" class="py-name" targets="Function viff.runtime.gather_shares()=viff.runtime-module.html#gather_shares"><a title="viff.runtime.gather_shares" class="py-name" href="#" onclick="return doclink('link-7', 'gather_shares', 'link-7');">gather_shares</a></tt><tt class="py-op">,</tt> <tt id="link-8" class="py-name" targets="Function viff.runtime.increment_pc()=viff.runtime-module.html#increment_pc"><a title="viff.runtime.increment_pc" class="py-name" href="#" onclick="return doclink('link-8', 'increment_pc', 'link-8');">increment_pc</a></tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-9" class="py-name"><a title="viff" class="py-name" href="#" onclick="return doclink('link-9', 'viff', 'link-0');">viff</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Module viff.field=viff.field-module.html"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-10', 'field', 'link-10');">field</a></tt> <tt class="py-keyword">import</tt> <tt id="link-11" class="py-name" targets="Class viff.field.GF256=viff.field.GF256-class.html"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-11', 'GF256', 'link-11');">GF256</a></tt><tt class="py-op">,</tt> <tt id="link-12" class="py-name" targets="Class viff.field.FieldElement=viff.field.FieldElement-class.html,Class viff.field2.FieldElement=viff.field2.FieldElement-class.html"><a title="viff.field.FieldElement
+viff.field2.FieldElement" class="py-name" href="#" onclick="return doclink('link-12', 'FieldElement', 'link-12');">FieldElement</a></tt> </tt>
+<a name="ComparisonToft05Mixin"></a><div id="ComparisonToft05Mixin-def"><a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <a class="py-toggle" href="#" id="ComparisonToft05Mixin-toggle" onclick="return toggle('ComparisonToft05Mixin');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="viff.comparison.ComparisonToft05Mixin-class.html">ComparisonToft05Mixin</a><tt class="py-op">:</tt> </tt>
+</div><div id="ComparisonToft05Mixin-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ComparisonToft05Mixin-expanded"><a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">    <tt class="py-docstring">"""Comparison by Tomas Toft, 2005."""</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">increment_pc</tt> </tt>
+<a name="ComparisonToft05Mixin.convert_bit_share"></a><div id="ComparisonToft05Mixin.convert_bit_share-def"><a name="L36"></a><tt class="py-lineno"> 36</tt> <a class="py-toggle" href="#" id="ComparisonToft05Mixin.convert_bit_share-toggle" onclick="return toggle('ComparisonToft05Mixin.convert_bit_share');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.comparison.ComparisonToft05Mixin-class.html#convert_bit_share">convert_bit_share</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">share</tt><tt class="py-op">,</tt> <tt class="py-param">dst_field</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ComparisonToft05Mixin.convert_bit_share-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ComparisonToft05Mixin.convert_bit_share-expanded"><a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">        <tt class="py-docstring">"""Convert a 0/1 share into dst_field."""</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">        <tt id="link-13" class="py-name" targets="Method viff.field2.GFElement.bit()=viff.field2.GFElement-class.html#bit"><a title="viff.field2.GFElement.bit" class="py-name" href="#" onclick="return doclink('link-13', 'bit', 'link-13');">bit</a></tt> <tt class="py-op">=</tt> <tt id="link-14" class="py-name"><a title="viff.util.rand" class="py-name" href="#" onclick="return doclink('link-14', 'rand', 'link-2');">rand</a></tt><tt class="py-op">.</tt><tt class="py-name">randint</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">        <tt class="py-name">dst_shares</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method viff.runtime.Runtime.prss_share()=viff.runtime.Runtime-class.html#prss_share"><a title="viff.runtime.Runtime.prss_share" class="py-name" href="#" onclick="return doclink('link-15', 'prss_share', 'link-15');">prss_share</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">players</tt><tt class="py-op">,</tt> <tt class="py-name">dst_field</tt><tt class="py-op">,</tt> <tt id="link-16" class="py-name"><a title="viff.field2.GFElement.bit" class="py-name" href="#" onclick="return doclink('link-16', 'bit', 'link-13');">bit</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">        <tt class="py-name">src_shares</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="viff.runtime.Runtime.prss_share" class="py-name" href="#" onclick="return doclink('link-17', 'prss_share', 'link-15');">prss_share</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">players</tt><tt class="py-op">,</tt> <tt id="link-18" class="py-name" targets="Function viff.shamir.share()=viff.shamir-module.html#share"><a title="viff.shamir.share" class="py-name" href="#" onclick="return doclink('link-18', 'share', 'link-18');">share</a></tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-19', 'field', 'link-10');">field</a></tt><tt class="py-op">,</tt> <tt id="link-20" class="py-name"><a title="viff.field2.GFElement.bit" class="py-name" href="#" onclick="return doclink('link-20', 'bit', 'link-13');">bit</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">        <tt class="py-comment"># TODO: Using a parallel reduce below seems to be slower than</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># using the built-in reduce.</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">        <tt class="py-comment"># We open tmp and convert the value into a field element from</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># the dst_field.</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">tmp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Method viff.runtime.Runtime.open()=viff.runtime.Runtime-class.html#open"><a title="viff.runtime.Runtime.open" class="py-name" href="#" onclick="return doclink('link-21', 'open', 'link-21');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">reduce</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method viff.runtime.Runtime.xor()=viff.runtime.Runtime-class.html#xor"><a title="viff.runtime.Runtime.xor" class="py-name" href="#" onclick="return doclink('link-22', 'xor', 'link-22');">xor</a></tt><tt class="py-op">,</tt> <tt class="py-name">src_shares</tt><tt class="py-op">,</tt> <tt id="link-23" class="py-name"><a title="viff.shamir.share" class="py-name" href="#" onclick="return doclink('link-23', 'share', 'link-18');">share</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">        <tt class="py-name">tmp</tt><tt class="py-op">.</tt><tt class="py-name">addCallback</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">i</tt><tt class="py-op">:</tt> <tt class="py-name">dst_field</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">        <tt class="py-comment"># Must update field on Share when we change the field of the</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># the value within</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">tmp</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-24', 'field', 'link-10');">field</a></tt> <tt class="py-op">=</tt> <tt class="py-name">dst_field</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">reduce</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="viff.runtime.Runtime.xor" class="py-name" href="#" onclick="return doclink('link-25', 'xor', 'link-22');">xor</a></tt><tt class="py-op">,</tt> <tt class="py-name">dst_shares</tt><tt class="py-op">,</tt> <tt class="py-name">tmp</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">increment_pc</tt> </tt>
+<a name="ComparisonToft05Mixin.greater_than_equal"></a><div id="ComparisonToft05Mixin.greater_than_equal-def"><a name="L56"></a><tt class="py-lineno"> 56</tt> <a class="py-toggle" href="#" id="ComparisonToft05Mixin.greater_than_equal-toggle" onclick="return toggle('ComparisonToft05Mixin.greater_than_equal');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.comparison.ComparisonToft05Mixin-class.html#greater_than_equal">greater_than_equal</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">share_a</tt><tt class="py-op">,</tt> <tt class="py-param">share_b</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ComparisonToft05Mixin.greater_than_equal-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ComparisonToft05Mixin.greater_than_equal-expanded"><a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">        <tt class="py-docstring">"""Compute share_a &gt;= share_b.</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">        Both arguments must be from the field given. The result is a</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">        GF256 share.</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt id="link-26" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-26', 'field', 'link-10');">field</a></tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">share_a</tt><tt class="py-op">,</tt> <tt class="py-string">"field"</tt><tt class="py-op">,</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">share_b</tt><tt class="py-op">,</tt> <tt class="py-string">"field"</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">share_a</tt><tt class="py-op">,</tt> <tt id="link-27" class="py-name"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-27', 'Share', 'link-6');">Share</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">            <tt class="py-name">share_a</tt> <tt class="py-op">=</tt> <tt id="link-28" class="py-name"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-28', 'Share', 'link-6');">Share</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-29" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-29', 'field', 'link-10');">field</a></tt><tt class="py-op">,</tt> <tt class="py-name">share_a</tt><tt class="py-op">)</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">share_b</tt><tt class="py-op">,</tt> <tt id="link-30" class="py-name"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-30', 'Share', 'link-6');">Share</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">            <tt class="py-name">share_b</tt> <tt class="py-op">=</tt> <tt id="link-31" class="py-name"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-31', 'Share', 'link-6');">Share</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-32" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-32', 'field', 'link-10');">field</a></tt><tt class="py-op">,</tt> <tt class="py-name">share_b</tt><tt class="py-op">)</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">        <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">bit_length</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">        <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">l</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">security_parameter</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">m</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">        <tt class="py-comment"># Preprocessing begin</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt> <tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-name">t</tt> <tt class="py-op">&lt;</tt> <tt id="link-33" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-33', 'field', 'link-10');">field</a></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Variable viff.field.GF256.modulus=viff.field.GF256-class.html#modulus"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-34', 'modulus', 'link-34');">modulus</a></tt><tt class="py-op">,</tt> <tt class="py-string">"2^(l+1) + 2^t &lt; p must hold"</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_players</tt> <tt class="py-op">+</tt> <tt class="py-number">2</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-name">l</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">        <tt class="py-name">int_bits</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method viff.runtime.Runtime.prss_share_random()=viff.runtime.Runtime-class.html#prss_share_random"><a title="viff.runtime.Runtime.prss_share_random" class="py-name" href="#" onclick="return doclink('link-35', 'prss_share_random', 'link-35');">prss_share_random</a></tt><tt class="py-op">(</tt><tt id="link-36" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-36', 'field', 'link-10');">field</a></tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">_</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">        <tt class="py-comment"># We must use int_bits without adding callbacks to the bits --</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># having int_b wait on them ensures this.</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">bits_to_int</tt><tt class="py-op">(</tt><tt class="py-param">bits</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">            <tt class="py-docstring">"""Converts a list of bits to an integer."""</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">sum</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-name">i</tt> <tt class="py-op">*</tt> <tt class="py-name">b</tt> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">bits</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">        <tt class="py-name">int_b</tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="viff.runtime.gather_shares" class="py-name" href="#" onclick="return doclink('link-37', 'gather_shares', 'link-7');">gather_shares</a></tt><tt class="py-op">(</tt><tt class="py-name">int_bits</tt><tt class="py-op">)</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">        <tt class="py-name">int_b</tt><tt class="py-op">.</tt><tt class="py-name">addCallback</tt><tt class="py-op">(</tt><tt class="py-name">bits_to_int</tt><tt class="py-op">)</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">        <tt class="py-comment"># TODO: this changes int_bits! It should be okay since</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># int_bits is not used any further, but still...</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">bit_bits</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method viff.comparison.ComparisonToft05Mixin.convert_bit_share()=viff.comparison.ComparisonToft05Mixin-class.html#convert_bit_share,Method viff.comparison.ComparisonToft07Mixin.convert_bit_share()=viff.comparison.ComparisonToft07Mixin-class.html#convert_bit_share"><a title="viff.comparison.ComparisonToft05Mixin.convert_bit_share
+viff.comparison.ComparisonToft07Mixin.convert_bit_share" class="py-name" href="#" onclick="return doclink('link-38', 'convert_bit_share', 'link-38');">convert_bit_share</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt id="link-39" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-39', 'GF256', 'link-11');">GF256</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">b</tt> <tt class="py-keyword">in</tt> <tt class="py-name">int_bits</tt><tt class="py-op">]</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">        <tt class="py-comment"># Preprocessing done</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">share_a</tt> <tt class="py-op">-</tt> <tt class="py-name">share_b</tt> <tt class="py-op">+</tt> <tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-name">l</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">        <tt class="py-name">T</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="viff.runtime.Runtime.open" class="py-name" href="#" onclick="return doclink('link-40', 'open', 'link-21');">open</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-name">t</tt> <tt class="py-op">-</tt> <tt class="py-name">int_b</tt> <tt class="py-op">+</tt> <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name"><a title="viff.runtime.gather_shares" class="py-name" href="#" onclick="return doclink('link-41', 'gather_shares', 'link-7');">gather_shares</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">T</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">bit_bits</tt><tt class="py-op">)</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method viff.runtime.BasicRuntime.schedule_callback()=viff.runtime.BasicRuntime-class.html#schedule_callback"><a title="viff.runtime.BasicRuntime.schedule_callback" class="py-name" href="#" onclick="return doclink('link-42', 'schedule_callback', 'link-42');">schedule_callback</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Method viff.comparison.ComparisonToft05Mixin._finish_greater_than_equal()=viff.comparison.ComparisonToft05Mixin-class.html#_finish_greater_than_equal,Method viff.comparison.ComparisonToft07Mixin._finish_greater_than_equal()=viff.comparison.ComparisonToft07Mixin-class.html#_finish_greater_than_equal"><a title="viff.comparison.ComparisonToft05Mixin._finish_greater_than_equal
+viff.comparison.ComparisonToft07Mixin._finish_greater_than_equal" class="py-name" href="#" onclick="return doclink('link-43', '_finish_greater_than_equal', 'link-43');">_finish_greater_than_equal</a></tt><tt class="py-op">,</tt> <tt class="py-name">l</tt><tt class="py-op">)</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">increment_pc</tt> </tt>
+<a name="ComparisonToft05Mixin._finish_greater_than_equal"></a><div id="ComparisonToft05Mixin._finish_greater_than_equal-def"><a name="L101"></a><tt class="py-lineno">101</tt> <a class="py-toggle" href="#" id="ComparisonToft05Mixin._finish_greater_than_equal-toggle" onclick="return toggle('ComparisonToft05Mixin._finish_greater_than_equal');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.comparison.ComparisonToft05Mixin-class.html#_finish_greater_than_equal">_finish_greater_than_equal</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">results</tt><tt class="py-op">,</tt> <tt class="py-param">l</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ComparisonToft05Mixin._finish_greater_than_equal-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ComparisonToft05Mixin._finish_greater_than_equal-expanded"><a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">        <tt class="py-docstring">"""Finish the calculation."""</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">        <tt class="py-name">T</tt> <tt class="py-op">=</tt> <tt class="py-name">results</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">        <tt class="py-name">bit_bits</tt> <tt class="py-op">=</tt> <tt class="py-name">results</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">        <tt class="py-name">vec</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt id="link-44" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-44', 'GF256', 'link-11');">GF256</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-45" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-45', 'GF256', 'link-11');">GF256</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">        <tt class="py-comment"># Calculate the vector, using only the first l bits</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">bi</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">bit_bits</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">l</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">            <tt class="py-name">Ti</tt> <tt class="py-op">=</tt> <tt id="link-46" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-46', 'GF256', 'link-11');">GF256</a></tt><tt class="py-op">(</tt><tt class="py-name">T</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="viff.field2.GFElement.bit" class="py-name" href="#" onclick="return doclink('link-47', 'bit', 'link-13');">bit</a></tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">            <tt class="py-name">ci</tt> <tt class="py-op">=</tt> <tt id="link-48" class="py-name"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-48', 'Share', 'link-6');">Share</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-49" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-49', 'GF256', 'link-11');">GF256</a></tt><tt class="py-op">,</tt> <tt class="py-name">bi</tt> <tt class="py-op">^</tt> <tt class="py-name">Ti</tt><tt class="py-op">)</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">            <tt class="py-name">vec</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">ci</tt><tt class="py-op">,</tt> <tt class="py-name">Ti</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">        <tt class="py-comment"># Reduce using the diamond operator. We want to do as much</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># as possible in parallel while being careful not to</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># switch the order of elements since the diamond operator</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># is non-commutative.</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">while</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">vec</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">            <tt class="py-name">tmp</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">            <tt class="py-keyword">while</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">vec</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">                <tt class="py-name">tmp</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name" targets="Method viff.comparison.ComparisonToft05Mixin._diamond()=viff.comparison.ComparisonToft05Mixin-class.html#_diamond"><a title="viff.comparison.ComparisonToft05Mixin._diamond" class="py-name" href="#" onclick="return doclink('link-50', '_diamond', 'link-50');">_diamond</a></tt><tt class="py-op">(</tt><tt class="py-name">vec</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">vec</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">vec</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">                <tt class="py-name">tmp</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">vec</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">            <tt class="py-name">vec</tt> <tt class="py-op">=</tt> <tt class="py-name">tmp</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-51" class="py-name"><a title="viff.field.GF256" class="py-name" href="#" onclick="return doclink('link-51', 'GF256', 'link-11');">GF256</a></tt><tt class="py-op">(</tt><tt class="py-name">T</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="viff.field2.GFElement.bit" class="py-name" href="#" onclick="return doclink('link-52', 'bit', 'link-13');">bit</a></tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">^</tt> <tt class="py-op">(</tt><tt class="py-name">bit_bits</tt><tt class="py-op">[</tt><tt class="py-name">l</tt><tt class="py-op">]</tt> <tt class="py-op">^</tt> <tt class="py-name">vec</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">increment_pc</tt> </tt>
+<a name="ComparisonToft05Mixin._diamond"></a><div id="ComparisonToft05Mixin._diamond-def"><a name="L129"></a><tt class="py-lineno">129</tt> <a class="py-toggle" href="#" id="ComparisonToft05Mixin._diamond-toggle" onclick="return toggle('ComparisonToft05Mixin._diamond');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.comparison.ComparisonToft05Mixin-class.html#_diamond">_diamond</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-param">top_a</tt><tt class="py-op">,</tt> <tt class="py-param">bot_a</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-param">top_b</tt><tt class="py-op">,</tt> <tt class="py-param">bot_b</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ComparisonToft05Mixin._diamond-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ComparisonToft05Mixin._diamond-expanded"><a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">        <tt class="py-docstring">"""The "diamond-operator".</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"><tt class="py-docstring">        Defined by</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-docstring">        (x, X) `diamond` (0, Y) = (0, Y)</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-docstring">        (x, X) `diamond` (1, Y) = (x, X)</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">        <tt class="py-name">top</tt> <tt class="py-op">=</tt> <tt class="py-name">top_a</tt> <tt class="py-op">*</tt> <tt class="py-name">top_b</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">        <tt class="py-name">bot</tt> <tt class="py-op">=</tt> <tt class="py-name">top_b</tt> <tt class="py-op">*</tt> <tt class="py-op">(</tt><tt class="py-name">bot_a</tt> <tt class="py-op">^</tt> <tt class="py-name">bot_b</tt><tt class="py-op">)</tt> <tt class="py-op">^</tt> <tt class="py-name">bot_b</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">top</tt><tt class="py-op">,</tt> <tt class="py-name">bot</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"> </tt>
+<a name="Toft05Runtime"></a><div id="Toft05Runtime-def"><a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <a class="py-toggle" href="#" id="Toft05Runtime-toggle" onclick="return toggle('Toft05Runtime');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="viff.comparison.Toft05Runtime-class.html">Toft05Runtime</a><tt class="py-op">(</tt><tt class="py-base-class">ComparisonToft05Mixin</tt><tt class="py-op">,</tt> <tt class="py-base-class">Runtime</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Toft05Runtime-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Toft05Runtime-expanded"><a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">    <tt class="py-docstring">"""Default mix of L{ComparisonToft05Mixin} and L{Runtime}."""</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"> </tt>
+<a name="ComparisonToft07Mixin"></a><div id="ComparisonToft07Mixin-def"><a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <a class="py-toggle" href="#" id="ComparisonToft07Mixin-toggle" onclick="return toggle('ComparisonToft07Mixin');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="viff.comparison.ComparisonToft07Mixin-class.html">ComparisonToft07Mixin</a><tt class="py-op">:</tt> </tt>
+</div><div id="ComparisonToft07Mixin-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ComparisonToft07Mixin-expanded"><a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">    <tt class="py-docstring">"""Efficient comparison by Tomas Toft 2007.</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-docstring">    This mixin provides a C{greater_than} method which can compare Zp</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-docstring">    field elements and gives a secret result shared over Zp.</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">increment_pc</tt> </tt>
+<a name="ComparisonToft07Mixin.convert_bit_share"></a><div id="ComparisonToft07Mixin.convert_bit_share-def"><a name="L156"></a><tt class="py-lineno">156</tt> <a class="py-toggle" href="#" id="ComparisonToft07Mixin.convert_bit_share-toggle" onclick="return toggle('ComparisonToft07Mixin.convert_bit_share');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.comparison.ComparisonToft07Mixin-class.html#convert_bit_share">convert_bit_share</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">share</tt><tt class="py-op">,</tt> <tt class="py-param">dst_field</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ComparisonToft07Mixin.convert_bit_share-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ComparisonToft07Mixin.convert_bit_share-expanded"><a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">        <tt class="py-docstring">"""Convert a 0/1 share into dst_field."""</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">        <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">security_parameter</tt> <tt class="py-op">+</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">log</tt><tt class="py-op">(</tt><tt class="py-name">dst_field</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-53', 'modulus', 'link-34');">modulus</a></tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">        <tt class="py-comment"># TODO assert field sizes are OK...</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">        <tt class="py-name">this_mask</tt> <tt class="py-op">=</tt> <tt id="link-54" class="py-name"><a title="viff.util.rand" class="py-name" href="#" onclick="return doclink('link-54', 'rand', 'link-2');">rand</a></tt><tt class="py-op">.</tt><tt class="py-name">randint</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-name">l</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">        <tt class="py-comment"># Share large random values in the big field and reduced ones</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># in the small...</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">src_shares</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="viff.runtime.Runtime.prss_share" class="py-name" href="#" onclick="return doclink('link-55', 'prss_share', 'link-15');">prss_share</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">players</tt><tt class="py-op">,</tt> <tt id="link-56" class="py-name"><a title="viff.shamir.share" class="py-name" href="#" onclick="return doclink('link-56', 'share', 'link-18');">share</a></tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-57', 'field', 'link-10');">field</a></tt><tt class="py-op">,</tt> <tt class="py-name">this_mask</tt><tt class="py-op">)</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">        <tt class="py-name">dst_shares</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="viff.runtime.Runtime.prss_share" class="py-name" href="#" onclick="return doclink('link-58', 'prss_share', 'link-15');">prss_share</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">players</tt><tt class="py-op">,</tt> <tt class="py-name">dst_field</tt><tt class="py-op">,</tt> <tt class="py-name">this_mask</tt><tt class="py-op">)</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">        <tt class="py-name">tmp</tt> <tt class="py-op">=</tt> <tt class="py-name">reduce</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name" targets="Method viff.runtime.Runtime.add()=viff.runtime.Runtime-class.html#add"><a title="viff.runtime.Runtime.add" class="py-name" href="#" onclick="return doclink('link-59', 'add', 'link-59');">add</a></tt><tt class="py-op">,</tt> <tt class="py-name">src_shares</tt><tt class="py-op">,</tt> <tt id="link-60" class="py-name"><a title="viff.shamir.share" class="py-name" href="#" onclick="return doclink('link-60', 'share', 'link-18');">share</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">        <tt class="py-comment"># We open tmp and convert the value into a field element from</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># the dst_field.</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">tmp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="viff.runtime.Runtime.open" class="py-name" href="#" onclick="return doclink('link-61', 'open', 'link-21');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">tmp</tt><tt class="py-op">)</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">        <tt class="py-name">tmp</tt><tt class="py-op">.</tt><tt class="py-name">addCallback</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt class="py-name">i</tt><tt class="py-op">:</tt> <tt class="py-name">dst_field</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">        <tt class="py-comment"># Must update field on Share when we change the field of the</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># the value within</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">tmp</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-62', 'field', 'link-10');">field</a></tt> <tt class="py-op">=</tt> <tt class="py-name">dst_field</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">        <tt class="py-name">full_mask</tt> <tt class="py-op">=</tt> <tt class="py-name">reduce</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="viff.runtime.Runtime.add" class="py-name" href="#" onclick="return doclink('link-63', 'add', 'link-59');">add</a></tt><tt class="py-op">,</tt> <tt class="py-name">dst_shares</tt><tt class="py-op">)</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">tmp</tt> <tt class="py-op">-</tt> <tt class="py-name">full_mask</tt> </tt>
+</div><a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">increment_pc</tt> </tt>
+<a name="ComparisonToft07Mixin.greater_than_equal_preproc"></a><div id="ComparisonToft07Mixin.greater_than_equal_preproc-def"><a name="L183"></a><tt class="py-lineno">183</tt> <a class="py-toggle" href="#" id="ComparisonToft07Mixin.greater_than_equal_preproc-toggle" onclick="return toggle('ComparisonToft07Mixin.greater_than_equal_preproc');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_preproc">greater_than_equal_preproc</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">field</tt><tt class="py-op">,</tt> <tt class="py-param">smallField</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ComparisonToft07Mixin.greater_than_equal_preproc-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ComparisonToft07Mixin.greater_than_equal_preproc-expanded"><a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">        <tt class="py-docstring">"""Preprocessing for greater_than_equal."""</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">smallField</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">            <tt class="py-name">smallField</tt> <tt class="py-op">=</tt> <tt id="link-64" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-64', 'field', 'link-10');">field</a></tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">        <tt class="py-comment"># Need an extra bit to avoid troubles with equal inputs</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">bit_length</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">        <tt class="py-name">k</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">security_parameter</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">        <tt class="py-comment"># TODO: verify asserts are correct...</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">assert</tt> <tt id="link-65" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-65', 'field', 'link-10');">field</a></tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-66', 'modulus', 'link-34');">modulus</a></tt> <tt class="py-op">&gt;</tt> <tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">+</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">+</tt><tt class="py-name">k</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"Field too small"</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt> <tt class="py-name">smallField</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-67', 'modulus', 'link-34');">modulus</a></tt> <tt class="py-op">&gt;</tt> <tt class="py-number">3</tt> <tt class="py-op">+</tt> <tt class="py-number">3</tt><tt class="py-op">*</tt><tt class="py-name">l</tt><tt class="py-op">,</tt> <tt class="py-string">"smallField too small"</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line"> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">        <tt class="py-comment"># TODO: do not generate all bits, only $l$ of them</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># could perhaps do PRSS over smaller subset?</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">r_bitsField</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="viff.runtime.Runtime.prss_share_random" class="py-name" href="#" onclick="return doclink('link-68', 'prss_share_random', 'link-35');">prss_share_random</a></tt><tt class="py-op">(</tt><tt id="link-69" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-69', 'field', 'link-10');">field</a></tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">_</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">+</tt><tt class="py-name">k</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line"> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">        <tt class="py-comment"># TODO: compute r_full from r_modl and top bits, not from scratch</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">r_full</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">r_bitsField</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">            <tt class="py-name">r_full</tt> <tt class="py-op">=</tt> <tt class="py-name">r_full</tt> <tt class="py-op">+</tt> <tt class="py-name">b</tt> <tt class="py-op">*</tt> <tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-name">i</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">        <tt class="py-name">r_bitsField</tt> <tt class="py-op">=</tt> <tt class="py-name">r_bitsField</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">l</tt><tt class="py-op">]</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">        <tt class="py-name">r_modl</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">r_bitsField</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">            <tt class="py-name">r_modl</tt> <tt class="py-op">=</tt> <tt class="py-name">r_modl</tt> <tt class="py-op">+</tt> <tt class="py-name">b</tt> <tt class="py-op">*</tt> <tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-name">i</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line"> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">        <tt class="py-comment"># Transfer bits to smallField</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt id="link-70" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-70', 'field', 'link-10');">field</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">smallField</tt><tt class="py-op">:</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">            <tt class="py-name">r_bits</tt> <tt class="py-op">=</tt> <tt class="py-name">r_bitsField</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">            <tt class="py-name">r_bits</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="viff.comparison.ComparisonToft05Mixin.convert_bit_share
+viff.comparison.ComparisonToft07Mixin.convert_bit_share" class="py-name" href="#" onclick="return doclink('link-71', 'convert_bit_share', 'link-38');">convert_bit_share</a></tt><tt class="py-op">(</tt><tt id="link-72" class="py-name"><a title="viff.field2.GFElement.bit" class="py-name" href="#" onclick="return doclink('link-72', 'bit', 'link-13');">bit</a></tt><tt class="py-op">,</tt> <tt class="py-name">smallField</tt><tt class="py-op">)</tt> \ </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">                      <tt class="py-keyword">for</tt> <tt id="link-73" class="py-name"><a title="viff.field2.GFElement.bit" class="py-name" href="#" onclick="return doclink('link-73', 'bit', 'link-13');">bit</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">r_bitsField</tt><tt class="py-op">]</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">        <tt class="py-name">s_bit</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="viff.runtime.Runtime.prss_share_random" class="py-name" href="#" onclick="return doclink('link-74', 'prss_share_random', 'link-35');">prss_share_random</a></tt><tt class="py-op">(</tt><tt id="link-75" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-75', 'field', 'link-10');">field</a></tt><tt class="py-op">,</tt> <tt class="py-name">binary</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line"> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">        <tt class="py-name">s_bitSmallField</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="viff.comparison.ComparisonToft05Mixin.convert_bit_share
+viff.comparison.ComparisonToft07Mixin.convert_bit_share" class="py-name" href="#" onclick="return doclink('link-76', 'convert_bit_share', 'link-38');">convert_bit_share</a></tt><tt class="py-op">(</tt><tt class="py-name">s_bit</tt><tt class="py-op">,</tt> <tt class="py-name">smallField</tt><tt class="py-op">)</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">        <tt class="py-name">s_sign</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> <tt class="py-op">+</tt> <tt class="py-name">s_bitSmallField</tt> <tt class="py-op">*</tt> <tt class="py-op">-</tt><tt class="py-number">2</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">        <tt class="py-comment"># m: uniformly random -- should be non-zero, however, this</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># happens with negligible probability</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># TODO: small field, no longer negligible probability of zero -- update</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">mask</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="viff.runtime.Runtime.prss_share_random" class="py-name" href="#" onclick="return doclink('link-77', 'prss_share_random', 'link-35');">prss_share_random</a></tt><tt class="py-op">(</tt><tt class="py-name">smallField</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">        <tt class="py-comment">#mask_2 = self.prss_share_random(smallField, False)</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#mask_OK = self.open(mask * mask_2)</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#dprint("Mask_OK: %s", mask_OK)</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-78" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-78', 'field', 'link-10');">field</a></tt><tt class="py-op">,</tt> <tt class="py-name">smallField</tt><tt class="py-op">,</tt> <tt class="py-name">s_bit</tt><tt class="py-op">,</tt> <tt class="py-name">s_sign</tt><tt class="py-op">,</tt> <tt class="py-name">mask</tt><tt class="py-op">,</tt> <tt class="py-name">r_full</tt><tt class="py-op">,</tt> <tt class="py-name">r_modl</tt><tt class="py-op">,</tt> <tt class="py-name">r_bits</tt> </tt>
+</div><a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">        <tt class="py-comment">##################################################</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Preprocessing done</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">##################################################</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">increment_pc</tt> </tt>
+<a name="ComparisonToft07Mixin.greater_than_equal_online"></a><div id="ComparisonToft07Mixin.greater_than_equal_online-def"><a name="L237"></a><tt class="py-lineno">237</tt> <a class="py-toggle" href="#" id="ComparisonToft07Mixin.greater_than_equal_online-toggle" onclick="return toggle('ComparisonToft07Mixin.greater_than_equal_online');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_online">greater_than_equal_online</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">share_a</tt><tt class="py-op">,</tt> <tt class="py-param">share_b</tt><tt class="py-op">,</tt> <tt class="py-param">preproc</tt><tt class="py-op">,</tt> <tt class="py-param">field</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ComparisonToft07Mixin.greater_than_equal_online-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ComparisonToft07Mixin.greater_than_equal_online-expanded"><a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">        <tt class="py-docstring">"""Compute share_a &gt;= share_b.</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line"><tt class="py-docstring">        Result is shared.</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">        <tt class="py-comment"># increment l as a, b are increased</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">bit_length</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">        <tt class="py-comment"># a = 2a+1; b= 2b // ensures inputs not equal</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">share_a</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> <tt class="py-op">*</tt> <tt class="py-name">share_a</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">        <tt class="py-name">share_b</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> <tt class="py-op">*</tt> <tt class="py-name">share_b</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line"> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line">        <tt class="py-comment">##################################################</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Unpack preprocessing</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">##################################################</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#TODO: assert fields are the same...</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-79" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-79', 'field', 'link-10');">field</a></tt><tt class="py-op">,</tt> <tt class="py-name">smallField</tt><tt class="py-op">,</tt> <tt class="py-name">s_bit</tt><tt class="py-op">,</tt> <tt class="py-name">s_sign</tt><tt class="py-op">,</tt> <tt class="py-name">mask</tt><tt class="py-op">,</tt> <tt class="py-name">r_full</tt><tt class="py-op">,</tt> <tt class="py-name">r_modl</tt><tt class="py-op">,</tt> <tt class="py-name">r_bits</tt> <tt class="py-op">=</tt> <tt class="py-name">preproc</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt> <tt class="py-name">l</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">r_bits</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"preprocessing does not match "</tt> \ </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">            <tt class="py-string">"online parameters"</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line"> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">        <tt class="py-comment">##################################################</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Begin online computation</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">##################################################</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># c = 2**l + a - b + r</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt class="py-name">share_a</tt> <tt class="py-op">-</tt> <tt class="py-name">share_b</tt> <tt class="py-op">+</tt> <tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-name">l</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="viff.runtime.Runtime.open" class="py-name" href="#" onclick="return doclink('link-80', 'open', 'link-21');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">r_full</tt> <tt class="py-op">+</tt> <tt class="py-name">z</tt><tt class="py-op">)</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="viff.runtime.BasicRuntime.schedule_callback" class="py-name" href="#" onclick="return doclink('link-81', 'schedule_callback', 'link-42');">schedule_callback</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="viff.comparison.ComparisonToft05Mixin._finish_greater_than_equal
+viff.comparison.ComparisonToft07Mixin._finish_greater_than_equal" class="py-name" href="#" onclick="return doclink('link-82', '_finish_greater_than_equal', 'link-43');">_finish_greater_than_equal</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line">                               <tt id="link-83" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-83', 'field', 'link-10');">field</a></tt><tt class="py-op">,</tt> <tt class="py-name">smallField</tt><tt class="py-op">,</tt> <tt class="py-name">s_bit</tt><tt class="py-op">,</tt> <tt class="py-name">s_sign</tt><tt class="py-op">,</tt> <tt class="py-name">mask</tt><tt class="py-op">,</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">                               <tt class="py-name">r_modl</tt><tt class="py-op">,</tt> <tt class="py-name">r_bits</tt><tt class="py-op">,</tt> <tt class="py-name">z</tt><tt class="py-op">)</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">c</tt> </tt>
+</div><a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line"> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">increment_pc</tt> </tt>
+<a name="ComparisonToft07Mixin._finish_greater_than_equal"></a><div id="ComparisonToft07Mixin._finish_greater_than_equal-def"><a name="L268"></a><tt class="py-lineno">268</tt> <a class="py-toggle" href="#" id="ComparisonToft07Mixin._finish_greater_than_equal-toggle" onclick="return toggle('ComparisonToft07Mixin._finish_greater_than_equal');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.comparison.ComparisonToft07Mixin-class.html#_finish_greater_than_equal">_finish_greater_than_equal</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">c</tt><tt class="py-op">,</tt> <tt class="py-param">field</tt><tt class="py-op">,</tt> <tt class="py-param">smallField</tt><tt class="py-op">,</tt> <tt class="py-param">s_bit</tt><tt class="py-op">,</tt> <tt class="py-param">s_sign</tt><tt class="py-op">,</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line">                               <tt class="py-param">mask</tt><tt class="py-op">,</tt> <tt class="py-param">r_modl</tt><tt class="py-op">,</tt> <tt class="py-param">r_bits</tt><tt class="py-op">,</tt> <tt class="py-param">z</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ComparisonToft07Mixin._finish_greater_than_equal-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ComparisonToft07Mixin._finish_greater_than_equal-expanded"><a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line">        <tt class="py-docstring">"""Finish the calculation."""</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line">        <tt class="py-comment"># increment l as a, b are increased</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">options</tt><tt class="py-op">.</tt><tt class="py-name">bit_length</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line">        <tt class="py-name">c_bits</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">smallField</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="viff.field2.GFElement.bit" class="py-name" href="#" onclick="return doclink('link-84', 'bit', 'link-13');">bit</a></tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line"> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">        <tt class="py-name">sumXORs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">*</tt><tt class="py-name">l</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">        <tt class="py-comment"># sumXORs[i] = sumXORs[i+1] + r_bits[i+1] + c_(i+1)</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#                           - 2*r_bits[i+1]*c_(i+1)</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">            <tt class="py-comment"># sumXORs[i] = \sum_{j=i+1}^{l-1} r_j\oplus c_j</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">sumXORs</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">sumXORs</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt class="py-name">r_bits</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">^</tt> <tt class="py-name">c_bits</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">        <tt class="py-name">E_tilde</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">r_bits</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">            <tt class="py-comment">## s + rBit[i] - cBit[i] + 3 * sumXors[i];</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">e_i</tt> <tt class="py-op">=</tt> <tt class="py-name">s_sign</tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt class="py-name">r_bits</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt class="py-name">c_bits</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">            <tt class="py-name">e_i</tt> <tt class="py-op">=</tt> <tt class="py-name">e_i</tt> <tt class="py-op">+</tt> <tt class="py-number">3</tt> <tt class="py-op">*</tt> <tt class="py-name">sumXORs</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line">            <tt class="py-name">E_tilde</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">e_i</tt><tt class="py-op">)</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line">        <tt class="py-name">E_tilde</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">mask</tt><tt class="py-op">)</tt> <tt class="py-comment"># Hack: will mult e_i and mask...</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line"> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">E_tilde</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line">            <tt class="py-comment"># TODO: pop() ought to be preferred? No: it takes the</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># just appended and thus works linearly... try with</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># two lists instead, pop(0) is quadratic if it moves</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># elements.</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">E_tilde</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">E_tilde</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-name">E_tilde</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line"> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line">        <tt class="py-name">E_tilde</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="viff.runtime.Runtime.open" class="py-name" href="#" onclick="return doclink('link-85', 'open', 'link-21');">open</a></tt><tt class="py-op">(</tt><tt class="py-name">E_tilde</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">        <tt class="py-name">E_tilde</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">addCallback</tt><tt class="py-op">(</tt><tt class="py-keyword">lambda</tt> <tt id="link-86" class="py-name"><a title="viff.field2.GFElement.bit" class="py-name" href="#" onclick="return doclink('link-86', 'bit', 'link-13');">bit</a></tt><tt class="py-op">:</tt> <tt id="link-87" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-87', 'field', 'link-10');">field</a></tt><tt class="py-op">(</tt><tt id="link-88" class="py-name"><a title="viff.field2.GFElement.bit" class="py-name" href="#" onclick="return doclink('link-88', 'bit', 'link-13');">bit</a></tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">        <tt class="py-name">non_zero</tt> <tt class="py-op">=</tt> <tt class="py-name">E_tilde</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line"> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line">        <tt class="py-comment"># UF == underflow</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">UF</tt> <tt class="py-op">=</tt> <tt class="py-name">non_zero</tt> <tt class="py-op">^</tt> <tt class="py-name">s_bit</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line"> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">        <tt class="py-comment"># conclude the computation -- compute final bit and map to 0/1</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># return  2^(-l) * (z - (c%2**l - r%2**l + UF*2**l))</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">c_mod2l</tt> <tt class="py-op">=</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">%</tt> <tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-name">l</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">c_mod2l</tt> <tt class="py-op">-</tt> <tt class="py-name">r_modl</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">UF</tt> <tt class="py-op">*</tt> <tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-name">l</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">z</tt> <tt class="py-op">-</tt> <tt class="py-name">result</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-op">~</tt><tt id="link-89" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-89', 'field', 'link-10');">field</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-name">l</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line">    <tt class="py-comment"># END _finish_greater_than</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">    <tt class="py-decorator">@</tt><tt class="py-decorator">increment_pc</tt> </tt>
+<a name="ComparisonToft07Mixin.greater_than_equal"></a><div id="ComparisonToft07Mixin.greater_than_equal-def"><a name="L312"></a><tt class="py-lineno">312</tt> <a class="py-toggle" href="#" id="ComparisonToft07Mixin.greater_than_equal-toggle" onclick="return toggle('ComparisonToft07Mixin.greater_than_equal');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal">greater_than_equal</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">share_a</tt><tt class="py-op">,</tt> <tt class="py-param">share_b</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ComparisonToft07Mixin.greater_than_equal-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ComparisonToft07Mixin.greater_than_equal-expanded"><a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line">        <tt class="py-docstring">"""Compute share_a &gt;= share_b.</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line"><tt class="py-docstring">        Both arguments must be of type field. The result is a</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line"><tt class="py-docstring">        field share.</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line">        <tt class="py-comment"># TODO: Make all input-taking methods do coercion like this.</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-90" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-90', 'field', 'link-10');">field</a></tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">share_a</tt><tt class="py-op">,</tt> <tt class="py-string">"field"</tt><tt class="py-op">,</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">share_b</tt><tt class="py-op">,</tt> <tt class="py-string">"field"</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">share_a</tt><tt class="py-op">,</tt> <tt id="link-91" class="py-name"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-91', 'Share', 'link-6');">Share</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">share_a</tt><tt class="py-op">,</tt> <tt id="link-92" class="py-name"><a title="viff.field.FieldElement
+viff.field2.FieldElement" class="py-name" href="#" onclick="return doclink('link-92', 'FieldElement', 'link-12');">FieldElement</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line">                <tt class="py-name">share_a</tt> <tt class="py-op">=</tt> <tt id="link-93" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-93', 'field', 'link-10');">field</a></tt><tt class="py-op">(</tt><tt class="py-name">share_a</tt><tt class="py-op">)</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line">            <tt class="py-name">share_a</tt> <tt class="py-op">=</tt> <tt id="link-94" class="py-name"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-94', 'Share', 'link-6');">Share</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-95" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-95', 'field', 'link-10');">field</a></tt><tt class="py-op">,</tt> <tt class="py-name">share_a</tt><tt class="py-op">)</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">share_b</tt><tt class="py-op">,</tt> <tt id="link-96" class="py-name"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-96', 'Share', 'link-6');">Share</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">share_b</tt><tt class="py-op">,</tt> <tt id="link-97" class="py-name"><a title="viff.field.FieldElement
+viff.field2.FieldElement" class="py-name" href="#" onclick="return doclink('link-97', 'FieldElement', 'link-12');">FieldElement</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line">                <tt class="py-name">share_b</tt> <tt class="py-op">=</tt> <tt id="link-98" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-98', 'field', 'link-10');">field</a></tt><tt class="py-op">(</tt><tt class="py-name">share_b</tt><tt class="py-op">)</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line">            <tt class="py-name">share_b</tt> <tt class="py-op">=</tt> <tt id="link-99" class="py-name"><a title="viff.runtime.Share" class="py-name" href="#" onclick="return doclink('link-99', 'Share', 'link-6');">Share</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-100" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-100', 'field', 'link-10');">field</a></tt><tt class="py-op">,</tt> <tt class="py-name">share_b</tt><tt class="py-op">)</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line"> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line">        <tt class="py-name">preproc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name" targets="Method viff.comparison.ComparisonToft07Mixin.greater_than_equal_preproc()=viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_preproc"><a title="viff.comparison.ComparisonToft07Mixin.greater_than_equal_preproc" class="py-name" href="#" onclick="return doclink('link-101', 'greater_than_equal_preproc', 'link-101');">greater_than_equal_preproc</a></tt><tt class="py-op">(</tt><tt id="link-102" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-102', 'field', 'link-10');">field</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name" targets="Method viff.comparison.ComparisonToft07Mixin.greater_than_equal_online()=viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_online"><a title="viff.comparison.ComparisonToft07Mixin.greater_than_equal_online" class="py-name" href="#" onclick="return doclink('link-103', 'greater_than_equal_online', 'link-103');">greater_than_equal_online</a></tt><tt class="py-op">(</tt><tt class="py-name">share_a</tt><tt class="py-op">,</tt> <tt class="py-name">share_b</tt><tt class="py-op">,</tt> <tt class="py-name">preproc</tt><tt class="py-op">,</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line">                                              <tt id="link-104" class="py-name"><a title="viff.field" class="py-name" href="#" onclick="return doclink('link-104', 'field', 'link-10');">field</a></tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line"> </tt>
+<a name="Toft07Runtime"></a><div id="Toft07Runtime-def"><a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line"> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt> <a class="py-toggle" href="#" id="Toft07Runtime-toggle" onclick="return toggle('Toft07Runtime');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="viff.comparison.Toft07Runtime-class.html">Toft07Runtime</a><tt class="py-op">(</tt><tt class="py-base-class">ComparisonToft07Mixin</tt><tt class="py-op">,</tt> <tt class="py-base-class">Runtime</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Toft07Runtime-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Toft07Runtime-expanded"><a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line">    <tt class="py-docstring">"""Default mix of L{ComparisonToft07Mixin} and L{Runtime}."""</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Apr 23 08:39:43 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/viff.comparison.ComparisonToft05Mixin-class.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.comparison.ComparisonToft05Mixin</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        <a href="viff.comparison-module.html">Module&nbsp;comparison</a> ::
+        Class&nbsp;ComparisonToft05Mixin
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.comparison.ComparisonToft05Mixin-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ComparisonToft05Mixin</h1><p class="nomargin-top"><span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft05Mixin">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_comparison" name="class_hierarchy_for_comparison">
+<area shape="rect" href="viff.comparison.ComparisonToft05Mixin&#45;class.html" title="ComparisonToft05Mixin" alt="" coords="5,7,171,36"/>
+<area shape="rect" href="viff.comparison.Toft05Runtime&#45;class.html" title="Toft05Runtime" alt="" coords="32,68,144,97"/>
+</map>
+  <img src="class_hierarchy_for_comparison.gif" alt='' usemap="#class_hierarchy_for_comparison" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>Comparison by Tomas Toft, 2005.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.comparison.ComparisonToft05Mixin-class.html#convert_bit_share" class="summary-sig-name">convert_bit_share</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">share</span>,
+        <span class="summary-sig-arg">dst_field</span>)</span><br />
+      Convert a 0/1 share into dst_field.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft05Mixin.convert_bit_share">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.comparison.ComparisonToft05Mixin-class.html#greater_than_equal" class="summary-sig-name">greater_than_equal</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">share_a</span>,
+        <span class="summary-sig-arg">share_b</span>)</span><br />
+      Compute share_a &gt;= share_b.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft05Mixin.greater_than_equal">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.comparison.ComparisonToft05Mixin-class.html#_finish_greater_than_equal" class="summary-sig-name" onclick="show_private();">_finish_greater_than_equal</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">results</span>,
+        <span class="summary-sig-arg">l</span>)</span><br />
+      Finish the calculation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft05Mixin._finish_greater_than_equal">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.comparison.ComparisonToft05Mixin-class.html#_diamond" class="summary-sig-name" onclick="show_private();">_diamond</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">(top_a, bot_a)</span>,
+        <span class="summary-sig-arg">(top_b, bot_b)</span>)</span><br />
+      The &quot;diamond-operator&quot;.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft05Mixin._diamond">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="convert_bit_share"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">convert_bit_share</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">share</span>,
+        <span class="sig-arg">dst_field</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft05Mixin.convert_bit_share">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Convert a 0/1 share into dst_field.</p>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@increment_pc</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="greater_than_equal"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">greater_than_equal</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">share_a</span>,
+        <span class="sig-arg">share_b</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft05Mixin.greater_than_equal">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Compute share_a &gt;= share_b.</p>
+  <p>Both arguments must be from the field given. The result is a GF256 
+  share.</p>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@increment_pc</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_finish_greater_than_equal"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_finish_greater_than_equal</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">results</span>,
+        <span class="sig-arg">l</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft05Mixin._finish_greater_than_equal">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Finish the calculation.</p>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@increment_pc</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_diamond"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_diamond</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">(top_a, bot_a)</span>,
+        <span class="sig-arg">(top_b, bot_b)</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft05Mixin._diamond">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>The &quot;diamond-operator&quot;.</p>
+  <p>Defined by</p>
+  <p>(x, X) `diamond` (0, Y) = (0, Y) (x, X) `diamond` (1, Y) = (x, X)</p>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@increment_pc</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Apr 23 08:39:41 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/viff.comparison.ComparisonToft07Mixin-class.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,405 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.comparison.ComparisonToft07Mixin</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        <a href="viff.comparison-module.html">Module&nbsp;comparison</a> ::
+        Class&nbsp;ComparisonToft07Mixin
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.comparison.ComparisonToft07Mixin-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ComparisonToft07Mixin</h1><p class="nomargin-top"><span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft07Mixin">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_comparison_2" name="class_hierarchy_for_comparison_2">
+<area shape="rect" href="viff.comparison.ComparisonToft07Mixin&#45;class.html" title="ComparisonToft07Mixin" alt="" coords="5,7,171,36"/>
+<area shape="rect" href="viff.comparison.Toft07Runtime&#45;class.html" title="Toft07Runtime" alt="" coords="32,68,144,97"/>
+</map>
+  <img src="class_hierarchy_for_comparison_2.gif" alt='' usemap="#class_hierarchy_for_comparison_2" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>Efficient comparison by Tomas Toft 2007.</p>
+  <p>This mixin provides a <code>greater_than</code> method which can 
+  compare Zp field elements and gives a secret result shared over Zp.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.comparison.ComparisonToft07Mixin-class.html#convert_bit_share" class="summary-sig-name">convert_bit_share</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">share</span>,
+        <span class="summary-sig-arg">dst_field</span>)</span><br />
+      Convert a 0/1 share into dst_field.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft07Mixin.convert_bit_share">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_preproc" class="summary-sig-name">greater_than_equal_preproc</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">field</span>,
+        <span class="summary-sig-arg">smallField</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Preprocessing for greater_than_equal.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft07Mixin.greater_than_equal_preproc">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_online" class="summary-sig-name">greater_than_equal_online</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">share_a</span>,
+        <span class="summary-sig-arg">share_b</span>,
+        <span class="summary-sig-arg">preproc</span>,
+        <span class="summary-sig-arg">field</span>)</span><br />
+      Compute share_a &gt;= share_b.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft07Mixin.greater_than_equal_online">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr class="private">
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.comparison.ComparisonToft07Mixin-class.html#_finish_greater_than_equal" class="summary-sig-name" onclick="show_private();">_finish_greater_than_equal</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">c</span>,
+        <span class="summary-sig-arg">field</span>,
+        <span class="summary-sig-arg">smallField</span>,
+        <span class="summary-sig-arg">s_bit</span>,
+        <span class="summary-sig-arg">s_sign</span>,
+        <span class="summary-sig-arg">mask</span>,
+        <span class="summary-sig-arg">r_modl</span>,
+        <span class="summary-sig-arg">r_bits</span>,
+        <span class="summary-sig-arg">z</span>)</span><br />
+      Finish the calculation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft07Mixin._finish_greater_than_equal">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal" class="summary-sig-name">greater_than_equal</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">share_a</span>,
+        <span class="summary-sig-arg">share_b</span>)</span><br />
+      Compute share_a &gt;= share_b.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft07Mixin.greater_than_equal">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Method Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-MethodDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="convert_bit_share"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">convert_bit_share</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">share</span>,
+        <span class="sig-arg">dst_field</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft07Mixin.convert_bit_share">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Convert a 0/1 share into dst_field.</p>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@increment_pc</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="greater_than_equal_preproc"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">greater_than_equal_preproc</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">field</span>,
+        <span class="sig-arg">smallField</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft07Mixin.greater_than_equal_preproc">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Preprocessing for greater_than_equal.</p>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@increment_pc</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="greater_than_equal_online"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">greater_than_equal_online</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">share_a</span>,
+        <span class="sig-arg">share_b</span>,
+        <span class="sig-arg">preproc</span>,
+        <span class="sig-arg">field</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft07Mixin.greater_than_equal_online">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Compute share_a &gt;= share_b. Result is shared.</p>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@increment_pc</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="_finish_greater_than_equal"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">_finish_greater_than_equal</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">c</span>,
+        <span class="sig-arg">field</span>,
+        <span class="sig-arg">smallField</span>,
+        <span class="sig-arg">s_bit</span>,
+        <span class="sig-arg">s_sign</span>,
+        <span class="sig-arg">mask</span>,
+        <span class="sig-arg">r_modl</span>,
+        <span class="sig-arg">r_bits</span>,
+        <span class="sig-arg">z</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft07Mixin._finish_greater_than_equal">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Finish the calculation.</p>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@increment_pc</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="greater_than_equal"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">greater_than_equal</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">share_a</span>,
+        <span class="sig-arg">share_b</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff.comparison-pysrc.html#ComparisonToft07Mixin.greater_than_equal">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Compute share_a &gt;= share_b.</p>
+  <p>Both arguments must be of type field. The result is a field share.</p>
+  <dl class="fields">
+    <dt>Decorators:</dt>
+    <dd><ul class="nomargin-top">
+        <li><code>@increment_pc</code></li>
+    </ul></dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Apr 23 08:39:41 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/viff.comparison.Toft05Runtime-class.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.comparison.Toft05Runtime</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        <a href="viff.comparison-module.html">Module&nbsp;comparison</a> ::
+        Class&nbsp;Toft05Runtime
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.comparison.Toft05Runtime-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Toft05Runtime</h1><p class="nomargin-top"><span class="codelink"><a href="viff.comparison-pysrc.html#Toft05Runtime">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_toft05runt" name="class_hierarchy_for_toft05runt">
+<area shape="rect" href="viff.comparison.ComparisonToft05Mixin&#45;class.html" title="ComparisonToft05Mixin" alt="" coords="5,68,171,97"/>
+<area shape="rect" href="viff.comparison.Toft05Runtime&#45;class.html" title="Toft05Runtime" alt="" coords="115,129,227,159"/>
+<area shape="rect" href="viff.runtime.BasicRuntime&#45;class.html" title="runtime.BasicRuntime" alt="" coords="177,7,332,36"/>
+<area shape="rect" href="viff.runtime.Runtime&#45;class.html" title="runtime.Runtime" alt="" coords="195,68,315,97"/>
+</map>
+  <img src="class_hierarchy_for_toft05runt.gif" alt='' usemap="#class_hierarchy_for_toft05runt" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>Default mix of <a 
+  href="viff.comparison.ComparisonToft05Mixin-class.html" 
+  class="link">ComparisonToft05Mixin</a> and <a 
+  href="viff.runtime.Runtime-class.html" class="link">Runtime</a>.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.comparison.ComparisonToft05Mixin-class.html">ComparisonToft05Mixin</a></code></b>:
+      <code><a href="viff.comparison.ComparisonToft05Mixin-class.html#convert_bit_share">convert_bit_share</a></code>,
+      <code><a href="viff.comparison.ComparisonToft05Mixin-class.html#greater_than_equal">greater_than_equal</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.comparison.ComparisonToft05Mixin-class.html">ComparisonToft05Mixin</a></code></b> (private):
+      <code><a href="viff.comparison.ComparisonToft05Mixin-class.html#_diamond" onclick="show_private();">_diamond</a></code>,
+      <code><a href="viff.comparison.ComparisonToft05Mixin-class.html#_finish_greater_than_equal" onclick="show_private();">_finish_greater_than_equal</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.Runtime-class.html">runtime.Runtime</a></code></b>:
+      <code><a href="viff.runtime.Runtime-class.html#__init__">__init__</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#add">add</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#mul">mul</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#open">open</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#prss_share">prss_share</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#prss_share_random">prss_share_random</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#shamir_share">shamir_share</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#sub">sub</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#xor">xor</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.Runtime-class.html">runtime.Runtime</a></code></b> (private):
+      <code><a href="viff.runtime.Runtime-class.html#_recombine" onclick="show_private();">_recombine</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#_shamir_share" onclick="show_private();">_shamir_share</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b>:
+      <code><a href="viff.runtime.BasicRuntime-class.html#add_player">add_player</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#preprocess">preprocess</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#schedule_callback">schedule_callback</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#shutdown">shutdown</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#synchronize">synchronize</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#wait_for">wait_for</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b> (private):
+      <code><a href="viff.runtime.BasicRuntime-class.html#_exchange_shares" onclick="show_private();">_exchange_shares</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#_expect_data" onclick="show_private();">_expect_data</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#_expect_share" onclick="show_private();">_expect_share</a></code>
+      </p></div>
+    </td>
+  </tr>
+</table>
+<!-- ==================== STATIC METHODS ==================== -->
+<a name="section-StaticMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Static Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-StaticMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b>:
+      <code><a href="viff.runtime.BasicRuntime-class.html#add_options">add_options</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b>:
+      <code><a href="viff.runtime.BasicRuntime-class.html#id">id</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#num_players">num_players</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#players">players</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#program_counter">program_counter</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#protocols">protocols</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#threshold">threshold</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b> (private):
+      <code><a href="viff.runtime.BasicRuntime-class.html#_needed_data" onclick="show_private();">_needed_data</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#_pool" onclick="show_private();">_pool</a></code>
+      </p></div>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Apr 23 08:39:41 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/viff.comparison.Toft07Runtime-class.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.comparison.Toft07Runtime</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        <a href="viff.comparison-module.html">Module&nbsp;comparison</a> ::
+        Class&nbsp;Toft07Runtime
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.comparison.Toft07Runtime-class.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Toft07Runtime</h1><p class="nomargin-top"><span class="codelink"><a href="viff.comparison-pysrc.html#Toft07Runtime">source&nbsp;code</a></span></p>
+<center>
+<center>  <map id="class_hierarchy_for_toft07runt" name="class_hierarchy_for_toft07runt">
+<area shape="rect" href="viff.comparison.ComparisonToft07Mixin&#45;class.html" title="ComparisonToft07Mixin" alt="" coords="5,68,171,97"/>
+<area shape="rect" href="viff.comparison.Toft07Runtime&#45;class.html" title="Toft07Runtime" alt="" coords="115,129,227,159"/>
+<area shape="rect" href="viff.runtime.BasicRuntime&#45;class.html" title="runtime.BasicRuntime" alt="" coords="177,7,332,36"/>
+<area shape="rect" href="viff.runtime.Runtime&#45;class.html" title="runtime.Runtime" alt="" coords="195,68,315,97"/>
+</map>
+  <img src="class_hierarchy_for_toft07runt.gif" alt='' usemap="#class_hierarchy_for_toft07runt" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<p>Default mix of <a 
+  href="viff.comparison.ComparisonToft07Mixin-class.html" 
+  class="link">ComparisonToft07Mixin</a> and <a 
+  href="viff.runtime.Runtime-class.html" class="link">Runtime</a>.</p>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.comparison.ComparisonToft07Mixin-class.html">ComparisonToft07Mixin</a></code></b>:
+      <code><a href="viff.comparison.ComparisonToft07Mixin-class.html#convert_bit_share">convert_bit_share</a></code>,
+      <code><a href="viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal">greater_than_equal</a></code>,
+      <code><a href="viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_online">greater_than_equal_online</a></code>,
+      <code><a href="viff.comparison.ComparisonToft07Mixin-class.html#greater_than_equal_preproc">greater_than_equal_preproc</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.comparison.ComparisonToft07Mixin-class.html">ComparisonToft07Mixin</a></code></b> (private):
+      <code><a href="viff.comparison.ComparisonToft07Mixin-class.html#_finish_greater_than_equal" onclick="show_private();">_finish_greater_than_equal</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.Runtime-class.html">runtime.Runtime</a></code></b>:
+      <code><a href="viff.runtime.Runtime-class.html#__init__">__init__</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#add">add</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#mul">mul</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#open">open</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#prss_share">prss_share</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#prss_share_random">prss_share_random</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#shamir_share">shamir_share</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#sub">sub</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#xor">xor</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.Runtime-class.html">runtime.Runtime</a></code></b> (private):
+      <code><a href="viff.runtime.Runtime-class.html#_recombine" onclick="show_private();">_recombine</a></code>,
+      <code><a href="viff.runtime.Runtime-class.html#_shamir_share" onclick="show_private();">_shamir_share</a></code>
+      </p></div>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b>:
+      <code><a href="viff.runtime.BasicRuntime-class.html#add_player">add_player</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#preprocess">preprocess</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#schedule_callback">schedule_callback</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#shutdown">shutdown</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#synchronize">synchronize</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#wait_for">wait_for</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b> (private):
+      <code><a href="viff.runtime.BasicRuntime-class.html#_exchange_shares" onclick="show_private();">_exchange_shares</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#_expect_data" onclick="show_private();">_expect_data</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#_expect_share" onclick="show_private();">_expect_share</a></code>
+      </p></div>
+    </td>
+  </tr>
+</table>
+<!-- ==================== STATIC METHODS ==================== -->
+<a name="section-StaticMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Static Methods</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-StaticMethods"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b>:
+      <code><a href="viff.runtime.BasicRuntime-class.html#add_options">add_options</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE VARIABLES ==================== -->
+<a name="section-InstanceVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Instance Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-InstanceVariables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b>:
+      <code><a href="viff.runtime.BasicRuntime-class.html#id">id</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#num_players">num_players</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#players">players</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#program_counter">program_counter</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#protocols">protocols</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#threshold">threshold</a></code>
+      </p>
+    <div class="private">    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="viff.runtime.BasicRuntime-class.html">runtime.BasicRuntime</a></code></b> (private):
+      <code><a href="viff.runtime.BasicRuntime-class.html#_needed_data" onclick="show_private();">_needed_data</a></code>,
+      <code><a href="viff.runtime.BasicRuntime-class.html#_pool" onclick="show_private();">_pool</a></code>
+      </p></div>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Apr 23 08:39:41 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/viff.config-module.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,292 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.config</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        Module&nbsp;config
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.config-module.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module config</h1><p class="nomargin-top"><span class="codelink"><a href="viff.config-pysrc.html">source&nbsp;code</a></span></p>
+<p>Functions for loading and saving player configurations.</p>
+  <p>Each player participating in a protocol execution must know some 
+  information about the other players, namely their hostname and port 
+  number. The player also needs to know something about itself, namely the 
+  keys used for pseudo-random secret sharing (PRSS).</p>
+  <p>The <a href="viff.config.Player-class.html" class="link">Player</a> 
+  class encapsulates this information. Generating a player configuration is
+  done using the <a href="viff.config-module.html#generate_configs" 
+  class="link">generate_configs</a> function. The 
+  <code>apps/generate_config_files.py</code> script uses that function to 
+  generate a player config and save it in a number of .ini files. Such a 
+  .ini file can be loaded with the <a 
+  href="viff.config-module.html#load_config" class="link">load_config</a> 
+  function.</p>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Classes</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Classes"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a href="viff.config.Player-class.html" class="summary-name">Player</a><br />
+      Wrapper for information about a player in the protocol.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>int</code>, <code>dict</code> from <code>int</code> to <a 
+      href="viff.config.Player-class.html" class="link">Player</a> 
+      instances.</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.config-module.html#load_config" class="summary-sig-name">load_config</a>(<span class="summary-sig-arg">source</span>)</span><br />
+      Load a player configuration file.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.config-pysrc.html#load_config">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"><code>dict</code> from <code>int</code> to <code>ConfigObj</code>.</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="viff.config-module.html#generate_configs" class="summary-sig-name">generate_configs</a>(<span class="summary-sig-arg">n</span>,
+        <span class="summary-sig-arg">t</span>,
+        <span class="summary-sig-arg">addresses</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">prefix</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Generate player configurations.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="viff.config-pysrc.html#generate_configs">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="load_config"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">load_config</span>(<span class="sig-arg">source</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff.config-pysrc.html#load_config">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Load a player configuration file.</p>
+  <p>Configuration files are simple INI-files containing information 
+  (hostname and port number) about the other players in the protocol.</p>
+  <p>One of the players own the config file and for this player additional 
+  information on PRSS keys is available.</p>
+  <dl class="fields">
+    <dt>Returns: <code>int</code>, <code>dict</code> from <code>int</code> to <a 
+      href="viff.config.Player-class.html" class="link">Player</a> 
+      instances.</dt>
+        <dd>owner ID and a mapping of player IDs to players.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="generate_configs"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">generate_configs</span>(<span class="sig-arg">n</span>,
+        <span class="sig-arg">t</span>,
+        <span class="sig-arg">addresses</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">prefix</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="viff.config-pysrc.html#generate_configs">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <p>Generate player configurations.</p>
+  <p>The configurations are returned as <code>ConfigObj</code>s and can be 
+  saved to disk if desired.</p>
+  <dl class="fields">
+    <dt>Parameters:</dt>
+    <dd><ul class="nomargin-top">
+        <li><strong class="pname"><code>n</code></strong> - number of players.</li>
+        <li><strong class="pname"><code>t</code></strong> - threshold.</li>
+        <li><strong class="pname"><code>addresses</code></strong> - list of (host, port) pairs.</li>
+        <li><strong class="pname"><code>prefix</code></strong> - filename prefix.</li>
+    </ul></dd>
+    <dt>Returns: <code>dict</code> from <code>int</code> to <code>ConfigObj</code>.</dt>
+        <dd>mapping from player id to player configuration.</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    <a href="epydoc-log.html">Generated by Epydoc
+    3.0.1 on Wed Apr 23 08:39:41 2008</a>
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/api/0.5rc1/viff.config-pysrc.html	Wed Apr 23 08:52:52 2008 +0200
@@ -0,0 +1,352 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>viff.config</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="viff-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://viff.dk/">VIFF: Virtual Ideal Functionality Framework</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="viff-module.html">Package&nbsp;viff</a> ::
+        Module&nbsp;config
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="viff.config-pysrc.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="viff.config-module.html">Module viff.config</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># Copyright 2007, 2008 VIFF Development Team.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is part of VIFF, the Virtual Ideal Functionality Framework.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># VIFF is free software: you can redistribute it and/or modify it</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># under the terms of the GNU Lesser General Public License (LGPL) as</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># published by the Free Software Foundation, either version 3 of the</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># License, or (at your option) any later version.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># VIFF is distributed in the hope that it will be useful, but WITHOUT</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># ANY WARRANTY; without even the implied warranty of MERCHANTABILITY</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Public License for more details.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU Lesser General Public</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># License along with VIFF. If not, see &lt;http://www.gnu.org/licenses/&gt;.</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring">"""Functions for loading and saving player configurations.</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">Each player participating in a protocol execution must know some</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring">information about the other players, namely their hostname and port</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring">number. The player also needs to know something about itself, namely</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring">the keys used for pseudo-random secret sharing (PRSS).</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring">The L{Player} class encapsulates this information. Generating a player</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring">configuration is done using the L{generate_configs} function. The</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring">C{apps/generate_config_files.py} script uses that function to generate</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring">a player config and save it in a number of .ini files. Such a .ini</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring">file can be loaded with the L{load_config} function.</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">configobj</tt> <tt class="py-keyword">import</tt> <tt class="py-name">ConfigObj</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package viff=viff-module.html"><a title="viff" class="py-name" href="#" onclick="return doclink('link-0', 'viff', 'link-0');">viff</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module viff.prss=viff.prss-module.html,Function viff.prss.prss()=viff.prss-module.html#prss"><a title="viff.prss
+viff.prss.prss" class="py-name" href="#" onclick="return doclink('link-1', 'prss', 'link-1');">prss</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Function viff.prss.generate_subsets()=viff.prss-module.html#generate_subsets"><a title="viff.prss.generate_subsets" class="py-name" href="#" onclick="return doclink('link-2', 'generate_subsets', 'link-2');">generate_subsets</a></tt><tt class="py-op">,</tt> <tt id="link-3" class="py-name" targets="Class viff.prss.PRF=viff.prss.PRF-class.html"><a title="viff.prss.PRF" class="py-name" href="#" onclick="return doclink('link-3', 'PRF', 'link-3');">PRF</a></tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-4" class="py-name"><a title="viff" class="py-name" href="#" onclick="return doclink('link-4', 'viff', 'link-0');">viff</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Module viff.util=viff.util-module.html"><a title="viff.util" class="py-name" href="#" onclick="return doclink('link-5', 'util', 'link-5');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-6" class="py-name" targets="Variable viff.util.rand=viff.util-module.html#rand"><a title="viff.util.rand" class="py-name" href="#" onclick="return doclink('link-6', 'rand', 'link-6');">rand</a></tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"> </tt>
+<a name="Player"></a><div id="Player-def"><a name="L38"></a><tt class="py-lineno"> 38</tt> <a class="py-toggle" href="#" id="Player-toggle" onclick="return toggle('Player');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="viff.config.Player-class.html">Player</a><tt class="py-op">:</tt> </tt>
+</div><div id="Player-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Player-expanded"><a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">    <tt class="py-docstring">"""Wrapper for information about a player in the protocol."""</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"> </tt>
+<a name="Player.__init__"></a><div id="Player.__init__-def"><a name="L41"></a><tt class="py-lineno"> 41</tt> <a class="py-toggle" href="#" id="Player.__init__-toggle" onclick="return toggle('Player.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.config.Player-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">id</tt><tt class="py-op">,</tt> <tt class="py-param">host</tt><tt class="py-op">,</tt> <tt class="py-param">port</tt><tt class="py-op">,</tt> <tt class="py-param">keys</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">dealer_keys</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Player.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Player.__init__-expanded"><a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">        <tt class="py-docstring">"""Initialize a player."""</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-op">=</tt> <tt class="py-name">id</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host</tt> <tt class="py-op">=</tt> <tt class="py-name">host</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">port</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt> <tt class="py-op">=</tt> <tt class="py-name">keys</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dealer_keys</tt> <tt class="py-op">=</tt> <tt class="py-name">dealer_keys</tt> </tt>
+</div><a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"> </tt>
+<a name="Player.prfs"></a><div id="Player.prfs-def"><a name="L49"></a><tt class="py-lineno"> 49</tt> <a class="py-toggle" href="#" id="Player.prfs-toggle" onclick="return toggle('Player.prfs');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.config.Player-class.html#prfs">prfs</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">modulus</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Player.prfs-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Player.prfs-expanded"><a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">        <tt class="py-docstring">"""Retrieve PRSS PRFs.</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">        The pseudo-random functions are used when this player is part</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring">        of a pseudo-random secret sharing for sharing an element</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring">        random to all players.</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">        @return: mapping from player subsets to L{PRF} instances.</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">        @returntype: L{dict} from L{frozenset} to L{PRF} instances.</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">        <tt id="link-7" class="py-name" targets="Method viff.config.Player.prfs()=viff.config.Player-class.html#prfs"><a title="viff.config.Player.prfs" class="py-name" href="#" onclick="return doclink('link-7', 'prfs', 'link-7');">prfs</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">subset</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">            <tt id="link-8" class="py-name"><a title="viff.config.Player.prfs" class="py-name" href="#" onclick="return doclink('link-8', 'prfs', 'link-7');">prfs</a></tt><tt class="py-op">[</tt><tt class="py-name">subset</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name"><a title="viff.prss.PRF" class="py-name" href="#" onclick="return doclink('link-9', 'PRF', 'link-3');">PRF</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt id="link-10" class="py-name" targets="Variable viff.field.GF256.modulus=viff.field.GF256-class.html#modulus"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-10', 'modulus', 'link-10');">modulus</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt class="py-comment"># TODO: the PRFs ought to be cached</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt id="link-11" class="py-name"><a title="viff.config.Player.prfs" class="py-name" href="#" onclick="return doclink('link-11', 'prfs', 'link-7');">prfs</a></tt> </tt>
+</div><a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"> </tt>
+<a name="Player.dealer_prfs"></a><div id="Player.dealer_prfs-def"><a name="L65"></a><tt class="py-lineno"> 65</tt> <a class="py-toggle" href="#" id="Player.dealer_prfs-toggle" onclick="return toggle('Player.dealer_prfs');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.config.Player-class.html#dealer_prfs">dealer_prfs</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">modulus</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Player.dealer_prfs-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Player.dealer_prfs-expanded"><a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">        <tt class="py-docstring">"""Retrieve dealer PRSS PRFs.</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring">        The pseudo-random functions are used when this player is the</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring">        dealer in a pseudo-random secret sharing.</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-docstring">        @return: mapping from player subsets to L{PRF} instances.</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring">        @returntype: L{dict} from L{frozenset} to L{PRF} instances.</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">        <tt class="py-name">dealers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">dealer</tt><tt class="py-op">,</tt> <tt class="py-name">keys</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dealer_keys</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">            <tt id="link-12" class="py-name"><a title="viff.config.Player.prfs" class="py-name" href="#" onclick="return doclink('link-12', 'prfs', 'link-7');">prfs</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">subset</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">keys</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">                <tt id="link-13" class="py-name"><a title="viff.config.Player.prfs" class="py-name" href="#" onclick="return doclink('link-13', 'prfs', 'link-7');">prfs</a></tt><tt class="py-op">[</tt><tt class="py-name">subset</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-14" class="py-name"><a title="viff.prss.PRF" class="py-name" href="#" onclick="return doclink('link-14', 'PRF', 'link-3');">PRF</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt id="link-15" class="py-name"><a title="viff.field.GF256.modulus" class="py-name" href="#" onclick="return doclink('link-15', 'modulus', 'link-10');">modulus</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">                <tt class="py-name">dealers</tt><tt class="py-op">[</tt><tt class="py-name">dealer</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-16" class="py-name"><a title="viff.config.Player.prfs" class="py-name" href="#" onclick="return doclink('link-16', 'prfs', 'link-7');">prfs</a></tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">        <tt class="py-comment"># TODO: the PRFs ought to be cached</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">dealers</tt> </tt>
+</div><a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"> </tt>
+<a name="Player.__repr__"></a><div id="Player.__repr__-def"><a name="L83"></a><tt class="py-lineno"> 83</tt> <a class="py-toggle" href="#" id="Player.__repr__-toggle" onclick="return toggle('Player.__repr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.config.Player-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Player.__repr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Player.__repr__-expanded"><a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">        <tt class="py-docstring">"""Simple string representation of the player."""</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"&lt;Player %d: %s:%d&gt;"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">host</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"> </tt>
+<a name="load_config"></a><div id="load_config-def"><a name="L88"></a><tt class="py-lineno"> 88</tt> <a class="py-toggle" href="#" id="load_config-toggle" onclick="return toggle('load_config');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="viff.config-module.html#load_config">load_config</a><tt class="py-op">(</tt><tt class="py-param">source</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="load_config-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="load_config-expanded"><a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">    <tt class="py-docstring">"""Load a player configuration file.</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-docstring">    Configuration files are simple INI-files containing information</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-docstring">    (hostname and port number) about the other players in the</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring">    protocol.</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring">    One of the players own the config file and for this player</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-docstring">    additional information on PRSS keys is available.</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring">    @return: owner ID and a mapping of player IDs to players.</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring">    @returntype: C{int}, C{dict} from C{int} to L{Player} instances.</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">s_unstr</tt><tt class="py-op">(</tt><tt class="py-param">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">        <tt class="py-docstring">"""Convert a string to a subset ID."""</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">frozenset</tt><tt class="py-op">(</tt><tt class="py-name">map</tt><tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">p_unstr</tt><tt class="py-op">(</tt><tt class="py-param">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">        <tt class="py-docstring">"""Convert a string to a player ID."""</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">[</tt><tt class="py-number">7</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">d_unstr</tt><tt class="py-op">(</tt><tt class="py-param">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">        <tt class="py-docstring">"""Convert a string to a dealer ID."""</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">[</tt><tt class="py-number">7</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">,</tt> <tt class="py-name">ConfigObj</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">        <tt id="link-17" class="py-name" targets="Module viff.config=viff.config-module.html"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-17', 'config', 'link-17');">config</a></tt> <tt class="py-op">=</tt> <tt class="py-name">source</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">        <tt id="link-18" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-18', 'config', 'link-17');">config</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ConfigObj</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">,</tt> <tt class="py-name">file_error</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">    <tt class="py-name">players</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">player</tt> <tt class="py-keyword">in</tt> <tt id="link-19" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-19', 'config', 'link-17');">config</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">        <tt class="py-name">id</tt> <tt class="py-op">=</tt> <tt class="py-name">p_unstr</tt><tt class="py-op">(</tt><tt class="py-name">player</tt><tt class="py-op">)</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">        <tt class="py-name">host</tt> <tt class="py-op">=</tt> <tt id="link-20" class="py-name"><a title="viff.config" class="py-name" href="#" onclick="return doclink('link-20', 'config', 'link-17');">config</a></tt><tt class="py-op">[</tt><tt class="py-name">player</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'host'</tt><tt class="py-op">]</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">        <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt>&