anchor.diff:              ?info("No staging ACME server URL defined. Skipping staging run and running in production mode."),
               production;
           {full, _} ->
  -            ?info("Let's Encrypt: Starting test run against staging server before actual Let's"
  -            "Encrypt certification"),
  +            ?info("Let's Encrypt: Starting test run against staging server before actual "
  +            "Let's Encrypt certification"),
               full;
           {_, undefined} -> throw("No staging ACME server URL defined. Cannot perform test run"),
               throw({error, no_letsencrypt_staging_server});
  
positive.code:     AuthString = make_auth_string(Token, State),
      TxtValue = base64url:encode(crypto:hash(sha256, AuthString)),
  
      % requires oz connection
      ok = Service:set_txt_record(#{txt_name => ?LETSENCRYPT_TXT_NAME,
          txt_value => TxtValue, txt_ttl => ?LETSENCRYPT_TXT_TTL}),
  
      Payload = #{<<"resource">> => <<"challenge">>,
          <<"type">> => <<"dns-01">>,
          <<"keyAuthorization">> => AuthString},
      {ok, _, _, State2} = http_post(URI, Payload, 202, State),
      {ok, State2#flow_state{authz_uri = URI}}.
  
  
  %%--------------------------------------------------------------------
  
negative.code: -define(LE_POLL_INTERVAL, timer:seconds(3)).
  % Number of polls about authorization status
  -define(LE_POLL_ATTEMPTS, 10).
  
  % Number of polls to DNS
  -define(WAIT_FOR_TXT_ATTEMPTS, 70).
  % Delay between polls to DNS. Total polling time should be longer than soa_minimum
  % in onezone
  -define(WAIT_FOR_TXT_DELAY, timer:seconds(2)).
  
  % Number of failed request retries
  -define(GET_RETRIES, 3).
  -define(POST_RETRIES, 4).
  